使用Python操作MySQL的小技巧

作者:新码农 时间:2024-01-23 16:13:49 

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)

来源:https://www.addcoder.com/blog/article_detail/gx314vzk/

标签:python,操作,MySQL
0
投稿

猜你喜欢

  • 如何才能保护好我们的SQL Server数据库

    2009-01-08 13:37:00
  • 详解python 拆包可迭代数据如tuple, list

    2022-01-08 19:28:43
  • 论坛首页效果图设计

    2009-03-19 13:46:00
  • django 装饰器 检测登录状态操作

    2021-03-13 16:40:40
  • Python中使用摄像头实现简单的延时摄影技术

    2023-10-24 01:31:04
  • Go语言的IO库那么多纠结该如何选择

    2023-10-08 07:16:46
  • SQL Server修改标识列方法 如自增列的批量化修改

    2024-01-19 04:59:22
  • Mysql精粹系列(精粹)

    2024-01-21 02:27:05
  • CentOS 7中安装mysql server的步骤分享

    2024-01-20 13:33:56
  • MySQL数据库搜索中的大小写敏感性

    2008-11-24 12:44:00
  • Python爬虫小练习之爬取并分析腾讯视频m3u8格式

    2022-07-03 08:44:32
  • python numpy库之如何使用matpotlib库绘图

    2023-02-07 22:22:24
  • Access下如何使用通用对话框

    2008-11-20 16:41:00
  • Python设计模式编程中解释器模式的简单程序示例分享

    2023-01-16 08:44:29
  • python自动化操作之动态验证码、滑动验证码的降噪和识别

    2023-03-26 02:48:28
  • Python环境下搭建属于自己的pip源的教程

    2021-12-19 05:57:54
  • Python进阶多线程爬取网页项目实战

    2021-01-03 23:16:14
  • php的对象传值与引用传值代码实例讲解

    2023-11-06 08:42:37
  • Python实现的各种常见分布算法示例

    2021-12-06 18:26:15
  • python写的一个文本编辑器

    2021-10-12 08:38:04
  • asp之家 网络编程 m.aspxhome.com