ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
| Python-MYSQL安装 | | | --- | --- | ``` 1、安装好mysql 2、python2.7版本 3、进入到Python27\Scripts\目录下执行cmd命令 4、cmd命令下,执行pip install MySQL-python==1.2.5 5、如果报error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat).错误则 1、下载vc库http://www.microsoft.com/en-us/download/confirmation.aspx?id=44266,现已保存至/python/安装必备/VCForPython27.msi 2、在 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python 下载对应的包版本,如果是win7 64位2.7版本的python,就下载 MySQL_python-1.2.5-cp27-none-win_amd64.whl,现已保存至/python/安装必备/MySQL_python-1.2.5-cp27-none-win_amd64.whl 6、把whl文件移到Python27\Scripts\目录下,在cmd命令执行pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl 7、出现success则安装成功 ``` | Mysql连接 | | | --- | --- | ``` import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "we7_yb", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句,查询mysql版本号 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取一条数据 data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接 db.close() ``` | Mysql3.7中pymysql模块 | | | --- | --- | ``` 安装 cmd命令 pip3.7 pymysql 出现success即成功 连接数据库 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","root","root","we7_yb" ) 其它的操作和MySQLdb模块操作相似 ``` | 创建表 | CREATE TABLE | | --- | --- | ``` import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "we7_yb", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() #如果数据表已经存在使用 execute() 方法删除表 cursor.execute('DROP TABLE IF EXISTS python_test') # 创建数据表SQL语句 sql = """CREATE TABLE python_test ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" #执行sql语句 cursor.execute(sql) # 关闭数据库连接 db.close() ``` | 插入数据 | INSERT INTO | | --- | --- | ``` import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "we7_yb", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句(两种sql语句拼接方式) sql = """INSERT INTO python_test(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES (%s, %s, %s, %s, %s )" % \ ('Mac', 'Mohan', 20, 'M', 2000) #异常处理,使用到事务操作 try: # 执行sql语句 # cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close() ``` | 查询 | SELECT | | --- | --- | ``` import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "we7_yb", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "SELECT * FROM python_test \ WHERE INCOME > %s" % (1000) #异常处理,使用到事务操作 try: # 执行SQL语句 cursor.execute(sql) results = cursor.fetchall() #获取所有记录列表 # results = cursor.fetchone() #获取下一个查询结果集。结果集是一个对象 # rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。 for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print "fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # 关闭数据库连接 db.close() ``` | 更新 | UPDATE | | --- | --- | ``` import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "we7_yb", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 更新语句,递增 sql = "UPDATE python_test SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') #异常处理,使用到事务操作 try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close() ``` | 删除一条数据 | DELETE| | --- | --- | ``` import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "we7_yb", charset='utf8' ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL删除记录语句 sql = "DELETE FROM python_test WHERE AGE > %s" % (20) #异常处理,使用到事务操作 try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close() ``` | 错误及异常 | | | --- | --- | | Warning | 当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类 | | Error | 警告以外所有其他错误类。必须是 StandardError 的子类 | | InterfaceError | 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类 | | DatabaseError | 和数据库有关的错误发生时触发。 必须是Error的子类 | | DataError | 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类 | | OperationalError | 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类 | | IntegrityError | 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类 | | InternalError | 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类 | | ProgrammingError | 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类 | | NotSupportedError | 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类 |