最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python 操作MySQL详解以及实例介绍
时间:2017-05-03 编辑:简简单单 来源:一聚教程网
Python 操作MySQL详解及实例
使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。
Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,缺点是环境依赖较多,安装复杂,近两年已停止更新,只支持Python2,不支持Python3。
PyMySQL为替代Python-MySQL而生,纯python打造,接口与Python-MySQL兼容,安装方便,支持Python3。
SQLAlchemy是一个ORM框架,它并不提供底层的数据库操作,而是要借助于MySQLdb、PyMySQL等第三方库来完成,目前SQLAlchemy在Web编程领域应用广泛。
本文主要介绍PyMySQL的正确使用方法,示例代码都是选自实战项目。
安装
简单的方式:
代码如下 | 复制代码 |
pip install pymysql |
如果无法联网,需要进行离线安装,例如:
代码如下 | 复制代码 |
pip install pymysql-x.x.x.tar.gz |
导入
代码如下 | 复制代码 |
importpymysql |
连接
代码如下 | 复制代码 |
defconnect_wxremit_db(): returnpymysql.connect(host=ཆ.123.5.28', port=3306, user='root', password='root1234', database='db_name', charset='latin1') |
查询
代码如下 | 复制代码 |
defquery_country_name(cc2): sql_str=("SELECT Fcountry_name_zh" +" FROM t_country_code" +" WHERE Fcountry_2code='%s'"%(cc2)) logging.info(sql_str)
con=mysql_api.connect_wxremit_db() cur=con.cursor() cur.execute(sql_str) rows=cur.fetchall() cur.close() con.close()
assertlen(rows)==1,'Fatal error: country_code does not exists!' returnrows[0][0] |
简单插入
代码如下 | 复制代码 |
definsert_file_rec(self, file_name, file_md5): con=mysql_api.connect_wxremit_db() cur=con.cursor() try: sql_str=("INSERT INTO t_forward_file (Ffile_name, Ffile_md5)", +" VALUES ('%s', '%s')"%(file_name, file_md5)) cur.execute(sql_str) con.commit() except: con.rollback() logging.exception('Insert operation error') raise finally: cur.close() con.close() |
批量插入
代码如下 | 复制代码 |
remit_ids=[(','CAD'), (','HKD')]
con=mysql_api.connect_wxremit_db() cur=con.cursor() try: cur.executemany("INSERT INTO t_order (Fremit_id, Fcur_type, Fcreate_time" +" VALUES (%s, %s, now())", new_items) assertcur.rowcount==len(remit_ids),'my error message' con.commit() exceptException as e: con.rollback() logging.exception('Insert operation error') finally: cur.close() con.close() |
更新
代码如下 | 复制代码 |
defupdate_refund_trans(self, remit_id): con=mysql_api.connect_wxremit_db() cur=con.cursor() try: sql_str=("SELECT Fremit_id" +" FROM t_wxrefund_trans" +" WHERE Fremit_id='%s'"%remit_id +" FOR UPDATE") logging.info(sql_str)
cur.execute(sql_str) assertcur.rowcount==1,'Fatal error: The wx-refund record be deleted!'
sql_str=("UPDATE t_wxrefund_trans" +" SET Fcheck_amount_flag=1" +", Fmodify_time=now()" +" WHERE Fremit_id='%s'"%remit_id logging.info(sql_str) cur.execute(sql_str)
assertcur.rowcount==1,'The number of affected rows not equal to 1' con.commit() except: con.rollback() logging.exception('Update operation error') raise finally: cur.close() con.close() |
PyMySQL已经相当成熟,和Python-MySQL一样,它在很多Linux发行版本中都是可选的安装组件。
-
上一个: function(函数)中的动态参数讲解
-
下一个: 简单谈谈PHP中的trait
相关文章
- mysql的replace into实例详解 06-06
- 关于SQL Server链接MySQL的几个实例 09-08
- python callproc调用 Mysql 储存过程教程实例 08-22
- MySQL视图(View)学习教程及实例 11-14
- Python操作Mysql实例代码教程 12-16
- mysql中建库和建表的实例 09-06