使用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

导入import pymysql

连接def connect_wxremit_db():

return pymysql.connect(host='10.123.5.28',

port=3306,

user='root',

password='root1234',

database='db_name',

charset='latin1')

查询def query_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()

assert len(rows) == 1, 'Fatal error: country_code does not exists!'

return rows[0][0]

简单插入def insert_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 = [('1234', 'CAD'), ('5678', '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)

assert cur.rowcount == len(remit_ids), 'my error message'

con.commit()

except Exception as e:

con.rollback()

logging.exception('Insert operation error')

finally:

cur.close()

con.close()

更新def update_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)

assert cur.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)

assert cur.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发行版本中都是可选的安装组件。

python php mysql_Python 操作 MySQL 的正确姿势相关推荐

  1. python logging mysql_Python 操作 MySQL 的正确姿势

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:邵建永 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MyS ...

  2. python豆瓣mysql_python操作mysql

    pymysql:python操作mysql 安装pymysql >: pip3 install pymysql 增删改查 # 选取操作的模块 pymysql # pymysql连接数据库的必要参 ...

  3. python app mysql_Python 操作 MySQL 的5种方式

    不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的 5 种方式,你可以 ...

  4. Python 操作 MySQL 的正确姿势

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:邵建永 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MyS ...

  5. python启动mysql_Python操作MySQL

    安装PyMySQL python中连接mysql的客户端主要有mysqldb.mysql-connector.pymysql三种.虽说性能上面各有差别,但是主流市场还是以操作便捷.使用简单为选择条件. ...

  6. golang mysql 回调_Golang操作MySQL的正确姿势

    封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...

  7. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  8. python操作mysql_python操作MySQL

    python操作MySQL.执行SQL语句.获取结果集.遍历结果集.取得谋个字段.获取表字段名.将图片插入数据库.执行事务等各种代码示例和详细介绍,代码居多. 实例一: 取得MySQL的版本 在win ...

  9. python 操作mysql_Python 操作MySQL

    我的Python环境: Python 2.7.14 |Anaconda, Inc.| (default, Oct 16 2017, 17:29:19) [GCC 7.2.0] on linux2 Ty ...

  10. python数据库mysql_python数据库(mysql)操作

    一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...

最新文章

  1. 喵哈哈村的狼人杀大战(4)
  2. 天翼云从业认证(4.2)网站建设实战
  3. python long函数_python 内置函数
  4. java是如何写入文件的
  5. php asp.net 代码量少,.NET_asp.net 反射减少代码书写量, 复制代码 代码如下:public b - phpStudy...
  6. solidworks今日制造插件_用SolidWorks设计齿轮,如何事半功倍,且听我说说
  7. 【kafka】kafka duplicate brokers in replica assignment
  8. 最后的战线java下载_最后战线2.0游戏
  9. html 弹窗 支持ie8,浏览器兼容性的问题、支持IE8、不支持IE6、想解决这个问题、两个都支持、...
  10. mysql 数据生成_mysql生成数据
  11. [ZT]如何建立通过防火墙的 NetMeeting 连接
  12. Python数据可视化大屏最全教程(全)
  13. (P46)面向对象版表达式计算器:让表达式计算器支持变量赋值 ,Calc类实现
  14. FX:{6630f2d7-bd52-4072-bfa7-863f3d0c5da0}
  15. 数组——洛谷#P1567 统计天数(Python实现)
  16. NXP S32K1 FlexTimer模块
  17. 以太坊源码分析之 P2P网络(五、p2p连接控制与消息处理(中))
  18. 1481: 考试排名(一)(结构体专题)
  19. Unity3D 集成 高德地图SDK 地图
  20. 1166 稀疏字母金字塔(1)

热门文章

  1. redis介绍和安装
  2. 第六节课-(第七节课)训练神经网络-2
  3. 对于委托的理解 委托和事件
  4. javascript 正则表达式小案例
  5. overflow与text-indent:-999em 字体隐藏
  6. 【学堂在线数据挖掘:理论方法笔记】第八天(4.2)
  7. Retinex实验效果图和图片格式转化的失真问题
  8. IDL实现遥感影像融合(批量)TASK(三)
  9. ajax如何向action发送数据的
  10. wamp mysql中文_解决wampServer 中MySQL插入中文乱码问题