欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~

作者:邵建永

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

连接

defconnect_wxremit_db():return pymysql.connect(host='10.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()assert len(rows) == 1, 'Fatal error: country_code does not exists!'

return rows[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 = [('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()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)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 logging mysql_Python 操作 MySQL 的正确姿势相关推荐

  1. python豆瓣mysql_python操作mysql

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

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

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

  3. Python 操作 MySQL 的正确姿势

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

  4. python启动mysql_Python操作MySQL

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

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

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

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

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

  7. python操作mysql_python操作MySQL

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

  8. 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 ...

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

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

最新文章

  1. 文件解析库doctotext源码分析
  2. SQL转换函数to_char/to_date/to_number
  3. Reference 字段的详情弹窗icon显示或者隐藏
  4. 为什么传值时加号变成了空格_URL的参数中有加号传值变为空格的问题(URL特殊字符)...
  5. spring oauth2 OAuth2AuthenticationProcessingFilter 校验token过滤器
  6. PBRT中的误差舍入管理(浮点运算)
  7. Cortex - M3 一些基础知识
  8. springboot项目自定义注解实现的多数据源切换--亲测有效
  9. java jdk 安装教程_JDK下载安装配置教程(详细)
  10. 手术导航系统原理简介、主要工作及应用
  11. eclipse angularjs 插件安装
  12. cdr软件百度百科_cdr是什么软件?
  13. 音视频技术开发周刊 85期
  14. Python 教程推荐
  15. DIV滚动条自动滚动到最底部的两种方法
  16. Postman 汉化(Postman中文版我已为您打包一切请放心下载使用)
  17. Mac OS X 下 su 命令提示 sorry 的解决方法
  18. CVPR 2021公布最佳论文候选!华人占据半壁江山,何恺明、陶大程、沈春华等人上榜...
  19. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端
  20. Verilog 实现斐波那契数列

热门文章

  1. from表单提交和JSON区别
  2. python的datetime函数_Python连载8-datetime包函数介绍
  3. python xgboost安装_win7 64 python2 xgboost安装
  4. python实例化对象做实参_如何在Python中记住类实例化?
  5. self 实例对象-代码详细解释
  6. Day02-变量_数据类型和运算符
  7. 使用叶神模拟器无法访问本机服务器的问题(报错:java.net.ConnectException: failed to connect to /127.0.0.1 (port 5000) )
  8. Linux:守护进程解析、如何实现守护进程
  9. 二进制、十进制、其他进制之间的转换
  10. Alpha冲刺(7/10)