使用Python操作MySQL的小技巧


Posted in Python onSeptember 10, 2020

1、获取插入数据的主键id

import pymysql
 
database = pymysql.connect(
  host="127.0.0.1", port=3306, user="root", password="root", database="test"
)
cursor = database.cursor()
 
for i in range(5):
  cursor.execute('insert into test (name) values ("test")')
  print(database.insert_id())
  database.commit()
 
 
cursor.close()
database.close()

通过db.insert_id()方法可以获取插入数据的主键id, 注意一定要在commit之前获取,否则返回0。

2、创建时间、更新时间

DEFAULT CURRENT_TIMESTAMP
--表示当插入数据的时候,该字段默认值为当前时间
 
ON UPDATE CURRENT_TIMESTAMP
--表示每次更新这条数据的时候,该字段都会更新成当前时间

这两个操作是mysql数据库本身在维护,可以根据这个特性来生成【创建时间】和【更新时间】两个字段,且不需要代码来维护。

CREATE TABLE `test` (
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、Python插入数据库时字符串中含有单引号或双引号报错

可以使用 pymysql.escape_string() 转换

if type(str_content) is str:
  str_content = pymysql.escape_string(str_content)

4、获取单个表的字段名和信息的方法

import MySQLdb as mdb
import sys
#获取数据库的链接对象
con = mdb.connect('localhost', 'root', 'root', 'test')
with con:
#获取普通的查询 cursor
cur = con.cursor()
cur.execute("SELECT * FROM Writers")
rows = cur.fetchall()
#获取连接对象的描述信息
desc = cur.description
print 'cur.description:',desc
#打印表头,就是字段名字
print "%s %3s" % (desc[0][0], desc[1][0])
for row in rows:
#打印结果
print "%2s %3s" % row

5、从数据库中把图片读出来

import MySQLdb as mdb
import sys
try:
#连接 mysql,获取连接的对象
conn = mdb.connect('localhost', 'root', 'root', 'test');
cursor = conn.cursor()
#执行查询该图片字段的 SQL
cursor.execute("SELECT Data FROM Images LIMIT 1")
#使用二进制写文件的方法,打开一个图片文件,若不存在则自动创建
fout = open('image.png','wb')
#直接将数据如文件
fout.write(cursor.fetchone()[0])
#关闭写入的文件
fout.close()
#释放查询数据的资源
cursor.close()
conn.close()
except IOError, e:
#捕获 IO 的异常 ,主要是文件写入会发生错误
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)

以上就是使用Python操作MySQL的小技巧的详细内容,更多关于python 操作MySQL的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python的Django框架安装全攻略
Jul 15 Python
python开发之thread线程基础实例入门
Nov 11 Python
python re模块findall()函数实例解析
Jan 19 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
python实现桌面壁纸切换功能
Jan 21 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
python将字母转化为数字实例方法
Oct 04 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
python获取linux系统信息的三种方法
Oct 14 Python
python编写实现抽奖器
Sep 10 #Python
Python字符串及文本模式方法详解
Sep 10 #Python
python raise的基本使用
Sep 10 #Python
Python常用数字处理基本操作汇总
Sep 10 #Python
Python通用唯一标识符uuid模块使用案例
Sep 10 #Python
Python编写单元测试代码实例
Sep 10 #Python
python super()函数的基本使用
Sep 10 #Python
You might like
php字符串分割函数explode的实例代码
2013/02/07 PHP
php使用codebase生成随机数
2014/03/25 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
Python使用wxPython实现计算器
2018/01/30 Python
Pycharm更换python解释器的方法
2018/10/29 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
建筑工程实习自我鉴定
2013/09/19 职场文书
保送生自荐信范文
2013/10/06 职场文书
家长寄语大全
2014/04/02 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python