您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > python操作mysql数据库
python操作mysql数据库Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLMicrosoftSQLServer2000InformixInterbaseOracleSybase你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DBAPI模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。DB-API是一个规范.它定义了一系列必须的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。PythonDB-API使用流程:引入API模块。获取与数据库的连接。执行SQL语句和存储过程。关闭数据库连接。什么是MySQLdb?MySQLdb是用于Python链接Mysql数据库的接口,它实现了Python数据库API规范V2.0,基于MySQLCAPI上建立的。如何安装MySQLdb?为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。复制以下代码,并执行:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb如果执行后的输出结果如下所示,意味着你没有安装MySQLdb模块:Traceback(mostrecentcalllast):Filetest.py,line3,inmoduleimportMySQLdbImportError:NomodulenamedMySQLdb安装MySQLdb,请访问,(Linux平台可以访问:)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令:$gunzipMySQL-python-1.2.2.tar.gz$tar-xvfMySQL-python-1.2.2.tar$cdMySQL-python-1.2.2$pythonsetup.pybuild$pythonsetup.pyinstall注意:请确保您有root权限来安装上述模块。数据库连接连接数据库前,请先确认以下事项:您已经创建了数据库TESTDB.在TESTDB数据库中您已经创建了表EMPLOYEEEMPLOYEE表字段为FIRST_NAME,LAST_NAME,AGE,SEX和INCOME。连接数据库TESTDB使用的用户名为testuser,密码为test123,你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。在你的机子上已经安装了PythonMySQLdb模块。如果您对sql语句不熟悉,可以访问我们的SQL基础教程实例:以下实例链接Mysql的TESTDB数据库:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#使用execute方法执行SQL语句cursor.execute(SELECTVERSION())#使用fetchone()方法获取一条数据库。data=cursor.fetchone()printDatabaseversion:%s%data#关闭数据库连接db.close()执行以上脚本输出结果如下:Databaseversion:5.0.45创建数据库表如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#如果数据表已经存在使用execute()方法删除表。cursor.execute(DROPTABLEIFEXISTSEMPLOYEE)#创建数据表SQL语句sql=CREATETABLEEMPLOYEE(FIRST_NAMECHAR(20)NOTNULL,LAST_NAMECHAR(20),AGEINT,SEXCHAR(1),INCOMEFLOAT)cursor.execute(sql)#关闭数据库连接db.close()数据库插入操作以下实例使用执行SQLINSERT语句向表EMPLOYEE插入记录:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#SQL插入语句sql=INSERTINTOEMPLOYEE(FIRST_NAME,LAST_NAME,AGE,SEX,INCOME)VALUES('Mac','Mohan',20,'M',2000)try:#执行sql语句cursor.execute(sql)#提交到数据库执行db.commit()except:#Rollbackincasethereisanyerrordb.rollback()#关闭数据库连接db.close()以上例子也可以写成如下形式:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#SQL插入语句sql=INSERTINTOEMPLOYEE(FIRST_NAME,\LAST_NAME,AGE,SEX,INCOME)\VALUES('%s','%s','%d','%c','%d')%\('Mac','Mohan',20,'M',2000)try:#执行sql语句cursor.execute(sql)#提交到数据库执行db.commit()except:#发生错误时回滚db.rollback()#关闭数据库连接db.close()实例:以下代码使用变量向SQL语句中传递参数:..................................user_id=test123password=passwordcon.execute('insertintoLoginvalues(%s,%s)'%\(user_id,password))..................................数据库查询操作Python查询Mysql使用fetchone()方法获取单条数据,使用fetchall()方法获取多条数据。fetchone():该方法获取下一个查询结果集。结果集是一个对象fetchall():接收全部的返回结果行.rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。实例:查询EMPLOYEE表中salary(工资)字段大于1000的所有数据:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#SQL查询语句sql=SELECT*FROMEMPLOYEE\WHEREINCOME'%d'%(1000)try:#执行SQL语句cursor.execute(sql)#获取所有记录列表results=cursor.fetchall()forrowinresults:fname=row[0]lname=row[1]age=row[2]sex=row[3]income=row[4]#打印结果printfname=%s,lname=%s,age=%d,sex=%s,income=%d%\(fname,lname,age,sex,income)except:printError:unabletofecthdata#关闭数据库连接db.close()以上脚本执行结果如下:fname=Mac,lname=Mohan,age=20,sex=M,income=2000数据库更新操作更新操作用于更新数据表的的数据,以下实例将EMPLOYEE表中的SEX字段为'M'的AGE字段递增1:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#SQL更新语句sql=UPDATEEMPLOYEESETAGE=AGE+1WHERESEX='%c'%('M')try:#执行SQL语句cursor.execute(sql)#提交到数据库执行db.commit()except:#发生错误时回滚db.rollback()#关闭数据库连接db.close()删除操作删除操作用于删除数据表中的数据,以下实例演示了删除数据表EMPLOYEE中AGE大于20的所有数据:#!/usr/bin/python#-*-coding:UTF-8-*-importMySQLdb#打开数据库连接db=MySQLdb.connect(localhost,testuser,test123,TESTDB)#使用cursor()方法获取操作游标cursor=db.cursor()#SQL删除语句sql=DELETEFROMEMPLOYEEWHEREAGE'%d'%(20)try:#执行SQL语句cursor.execute(sql)#提交修改db.commit()except:#发生错误时回滚db.rollback()#关闭连接db.close()执行事务事务机制可以确保数据一致性。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。PythonDBAPI2.0的事务提供了两个方法commit或rollback。实例:#
本文标题:python操作mysql数据库
链接地址:https://www.777doc.com/doc-4209880 .html