使用Python操作MySQL的小技巧
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 mdbimport sys#获取数据库的链接对象con = mdb.connect(’localhost’, ’root’, ’root’, ’test’)with con:#获取普通的查询 cursorcur = con.cursor()cur.execute('SELECT * FROM Writers')rows = cur.fetchall()#获取连接对象的描述信息desc = cur.descriptionprint ’cur.description:’,desc#打印表头,就是字段名字print '%s %3s' % (desc[0][0], desc[1][0])for row in rows:#打印结果print '%2s %3s' % row
5、从数据库中把图片读出来
import MySQLdb as mdbimport systry:#连接 mysql,获取连接的对象conn = mdb.connect(’localhost’, ’root’, ’root’, ’test’);cursor = conn.cursor()#执行查询该图片字段的 SQLcursor.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的资料请关注好吧啦网其它相关文章!
相关文章: