python logging mysql_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
导入
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 的正确姿势相关推荐
- python豆瓣mysql_python操作mysql
pymysql:python操作mysql 安装pymysql >: pip3 install pymysql 增删改查 # 选取操作的模块 pymysql # pymysql连接数据库的必要参 ...
- python app mysql_Python 操作 MySQL 的5种方式
不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的 5 种方式,你可以 ...
- Python 操作 MySQL 的正确姿势
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:邵建永 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MyS ...
- python启动mysql_Python操作MySQL
安装PyMySQL python中连接mysql的客户端主要有mysqldb.mysql-connector.pymysql三种.虽说性能上面各有差别,但是主流市场还是以操作便捷.使用简单为选择条件. ...
- golang mysql 回调_Golang操作MySQL的正确姿势
封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...
- Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8
我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...
- python操作mysql_python操作MySQL
python操作MySQL.执行SQL语句.获取结果集.遍历结果集.取得谋个字段.获取表字段名.将图片插入数据库.执行事务等各种代码示例和详细介绍,代码居多. 实例一: 取得MySQL的版本 在win ...
- 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 ...
- python数据库mysql_python数据库(mysql)操作
一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...
最新文章
- 文件解析库doctotext源码分析
- SQL转换函数to_char/to_date/to_number
- Reference 字段的详情弹窗icon显示或者隐藏
- 为什么传值时加号变成了空格_URL的参数中有加号传值变为空格的问题(URL特殊字符)...
- spring oauth2 OAuth2AuthenticationProcessingFilter 校验token过滤器
- PBRT中的误差舍入管理(浮点运算)
- Cortex - M3 一些基础知识
- springboot项目自定义注解实现的多数据源切换--亲测有效
- java jdk 安装教程_JDK下载安装配置教程(详细)
- 手术导航系统原理简介、主要工作及应用
- eclipse angularjs 插件安装
- cdr软件百度百科_cdr是什么软件?
- 音视频技术开发周刊 85期
- Python 教程推荐
- DIV滚动条自动滚动到最底部的两种方法
- Postman 汉化(Postman中文版我已为您打包一切请放心下载使用)
- Mac OS X 下 su 命令提示 sorry 的解决方法
- CVPR 2021公布最佳论文候选!华人占据半壁江山,何恺明、陶大程、沈春华等人上榜...
- 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端
- Verilog 实现斐波那契数列
热门文章
- from表单提交和JSON区别
- python的datetime函数_Python连载8-datetime包函数介绍
- python xgboost安装_win7 64 python2 xgboost安装
- python实例化对象做实参_如何在Python中记住类实例化?
- self 实例对象-代码详细解释
- Day02-变量_数据类型和运算符
- 使用叶神模拟器无法访问本机服务器的问题(报错:java.net.ConnectException: failed to connect to /127.0.0.1 (port 5000) )
- Linux:守护进程解析、如何实现守护进程
- 二进制、十进制、其他进制之间的转换
- Alpha冲刺(7/10)