当前位置: 首页 > 后端技术 > Python

Python操作数据库

时间:2023-03-26 19:13:06 Python

Python3使用pymysql连接数据库,实现简单的增删改查。Python3以下版本使用MySQLdb链接Mysql数据库一:PyMySQL安装一:使用pip安装pymysqlpipinstallpymysql2:使用git安装pymysqlgitclonehttps://github.com/PyMySQL/PyMySQLcdPyMySQL/python3setup.pyinstall3:使用curl安装指定版本的pymysql#X.X是PyMySQL的版本号curl-Lhttps://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X|tarxzcdPyMySQL*pythonsetup.pyinstall#现在您可以删除PyMySQL*目录。安装过程中,可能会出现“ImportError:Nomodulenamedsetuptools”的错误信息,说明你没有安装setuptools,可以访问https://pypi.python.org/pypi/...找到每个系统的安装方法。Linux系统安装示例:wgethttps://bootstrap.pypa.io/ez_setup.python3ez_setup.py2:MySQLdb安装安装MySQLdb,请访问https://sourceforge.net/proje...,(Linux平台可访问:https://pypi.python.org/pypi/...)从这里可以选择适合自己平台的安装包,分为预编译二进制文件和源码安装包。如果您选择二进制分发,安装过程将根据基本安装提示完成。如果从源码安装,需要切换到MySQLdb发行版的顶层目录,输入以下命令:gunzipMySQL-python-1.2.2.tar.gztar-xvfMySQL-python-1.2.2.tarcdMySQL-python-1.2.2pythonsetup.pybuildpythonsetup.pyinstall三:数据库操作下面是使用pymysql连接数据库的方法(如果使用MySQLdb,将pymysql换成MySQLdb)1:查询数据fetchone():这个方法获取下一个查询结果集。结果集是一个对象?fetchall():接收所有返回的结果行。?rowcount:这是一个只读属性,返回受执行execute()方法影响的行数。importpymysql#打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")#localhost:数据库地址testuser:数据库账号test123:数据库密码TESTDB:数据库名useMySQLdbpluscharset='utf8'#使用cursor()方法创建游标对象cursorcursor=db.cursor()#使用execute()方法执行SQL查询cursor.execute("SELECTVERSION()")#使用fetchone()获取单条数据的方法fetchall()查询多条数据。data=cursor.fetchone()print("Databaseversion:%s"%data)#关闭数据库连接db.close()2:创建数据库表importpymysql#打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")#使用cursor()方法创建游标对象cursorcursor=db.cursor()#使用execute()方法执行SQL,并删除thecursorifthetableexists.execute("DROPTABLEIFEXISTSEMPLOYEE")#使用预处理语句创建表sql="""CREATETABLEEMPLOYEE(FIRST_NAMECHAR(20)NOTNULL,LAST_NAMECHAR(20),AGEINT,SEXCHAR(1),收入浮点数)"""cursor.execute(sql)#关闭数据库连接db.close()3:Insertdataimportpymysql#打开数据库连接db=pymysql.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:#出错回滚db.rollback()#关闭数据库连接db.close()4:Updatedataimportpymysql#打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")#使用游标()方法获取操作游标cursor=db.cursor()#SQL更新语句sql="UPDATEEMPLOYEESETAGE=AGE+1WHERESEX='%c'"%('M')try:#执行SQL语句游标.execute(sql)#提交到数据库执行db.commit()except:#回滚发生错误时db.rollback()#关闭数据库连接db.close()5:Deletedataimportpymysql#打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")#使用cursor()方法获取操作cursorcursor=db.cursor()#SQL删除语句sql="DELETEFROMEMPLOYEEWHEREAGE>'%d'"%(20)try:#执行SQL语句cursor.execute(sql)#提交并修改db.commit()except:#出错时回滚db.rollback()#关闭连接db.close()四:执行事务事务机制可以保证数据的一致性。事务应该有4个属性:原子性、一致性、隔离性、持久性。这4个属性通常称为ACID特性。?原子性。事务是一个不可分割的工作单元,操作包含在事务中的要么完成要么不完成。?一致性。事务必须将数据库从一种一致状态更改为另一种一致状态。一致性和原子性密切相关。?隔离性。事务的执行不能被其他事务干扰.也就是说,操作和d一个事务内使用的数据与其他并发事务隔离,并发执行的事务不能相互干扰。?持久耐用。持久性,也称为永久性,是指一旦事务被提交,它对数据库中数据的改变应该是永久性的。后续的其他操作或故障应该不会对其产生任何影响。五:错误处理异常说明Warning出现严重警告时触发,比如插入数据被截断等。必须是StandardError的子类。除错误警告之外的所有其他错误类别。必须是StandardError的子类。InterfaceError当有数据库接口时在模块本身发生错误(而不是数据库错误)时触发。必须是错误的子类。DatabaseError在发生与数据库相关的错误时触发。必须是错误的子类。DataError在数据处理过程中出现错误时触发,例如:除零错误、数据超出范围等。必须是DatabaseError的子类。OperationalError是指不受用户控制,但在操作数据库时发生的错误。比如:连接意外断开,找不到数据库名,事务处理失败,内存分配错误等都是操作数据库时出现的错误。必须是DatabaseError的子类。IntegrityError与完整性相关的错误,例如外键检查失败等。必须是DatabaseError的子类。InternalError数据库内部错误,如游标(cursor)失效,事务同步失败等。必须是DatabaseError的子类。ProgrammingError程序错误,如数据表(表)未找到或已存在、SQL语句语法错误、参数个数错误等。必须是DatabaseError的子类。NotSupportedError不支持错误,这意味着使用了数据库不支持的函数或API。例如,在连接对象上使用.rollback()函数,但数据库不支持事务或事务已关闭。必须是DatabaseError的子类。

最新推荐
猜你喜欢