使用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连接mssql数据库编码问题解决方法
Jan 01 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
windows 下python+numpy安装实用教程
Dec 23 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
PyTorch中的Variable变量详解
Jan 07 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 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
用ODBC的分页显示
2006/10/09 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
js文字横向滚动特效
2015/11/11 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
Python动态加载模块的3种方法
2014/11/22 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
迎新生标语大全
2014/10/06 职场文书
奖励通知
2015/04/22 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android