使用Python操作MySQL的小技巧
1、獲取插入數(shù)據(jù)的主鍵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()
通過(guò)db.insert_id()方法可以獲取插入數(shù)據(jù)的主鍵id, 注意一定要在commit之前獲取,否則返回0。
2、創(chuàng)建時(shí)間、更新時(shí)間
DEFAULT CURRENT_TIMESTAMP--表示當(dāng)插入數(shù)據(jù)的時(shí)候,該字段默認(rèn)值為當(dāng)前時(shí)間 ON UPDATE CURRENT_TIMESTAMP--表示每次更新這條數(shù)據(jù)的時(shí)候,該字段都會(huì)更新成當(dāng)前時(shí)間
這兩個(gè)操作是mysql數(shù)據(jù)庫(kù)本身在維護(hù),可以根據(jù)這個(gè)特性來(lái)生成【創(chuàng)建時(shí)間】和【更新時(shí)間】?jī)蓚€(gè)字段,且不需要代碼來(lái)維護(hù)。
CREATE TABLE `test` ( `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ’創(chuàng)建時(shí)間’, `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ’更新時(shí)間’) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、Python插入數(shù)據(jù)庫(kù)時(shí)字符串中含有單引號(hào)或雙引號(hào)報(bào)錯(cuò)
可以使用 pymysql.escape_string() 轉(zhuǎn)換
if type(str_content) is str: str_content = pymysql.escape_string(str_content)
4、獲取單個(gè)表的字段名和信息的方法
import MySQLdb as mdbimport sys#獲取數(shù)據(jù)庫(kù)的鏈接對(duì)象con = mdb.connect(’localhost’, ’root’, ’root’, ’test’)with con:#獲取普通的查詢(xún) cursorcur = con.cursor()cur.execute('SELECT * FROM Writers')rows = cur.fetchall()#獲取連接對(duì)象的描述信息desc = cur.descriptionprint ’cur.description:’,desc#打印表頭,就是字段名字print '%s %3s' % (desc[0][0], desc[1][0])for row in rows:#打印結(jié)果print '%2s %3s' % row
5、從數(shù)據(jù)庫(kù)中把圖片讀出來(lái)
import MySQLdb as mdbimport systry:#連接 mysql,獲取連接的對(duì)象conn = mdb.connect(’localhost’, ’root’, ’root’, ’test’);cursor = conn.cursor()#執(zhí)行查詢(xún)?cè)搱D片字段的 SQLcursor.execute('SELECT Data FROM Images LIMIT 1')#使用二進(jìn)制寫(xiě)文件的方法,打開(kāi)一個(gè)圖片文件,若不存在則自動(dòng)創(chuàng)建fout = open(’image.png’,’wb’)#直接將數(shù)據(jù)如文件fout.write(cursor.fetchone()[0])#關(guān)閉寫(xiě)入的文件fout.close()#釋放查詢(xún)數(shù)據(jù)的資源cursor.close()conn.close()except IOError, e:#捕獲 IO 的異常 ,主要是文件寫(xiě)入會(huì)發(fā)生錯(cuò)誤print 'Error %d: %s' % (e.args[0],e.args[1])sys.exit(1)
以上就是使用Python操作MySQL的小技巧的詳細(xì)內(nèi)容,更多關(guān)于python 操作MySQL的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. Java之單例設(shè)計(jì)模式示例詳解2. 利用FastReport傳遞圖片參數(shù)在報(bào)表上展示簽名信息的實(shí)現(xiàn)方法3. XHTML 1.0:標(biāo)記新的開(kāi)端4. ASP.NET MVC視圖頁(yè)使用jQuery傳遞異步數(shù)據(jù)的幾種方式詳解5. Java基于redis和mysql實(shí)現(xiàn)簡(jiǎn)單的秒殺(附demo)6. 詳解php如何合并身份證正反面圖片為一張圖片7. java必懂的冷知識(shí)點(diǎn)之Base64加密與解密8. AJAX實(shí)現(xiàn)省市縣三級(jí)聯(lián)動(dòng)效果9. python字典通過(guò)值反查鍵的實(shí)現(xiàn)(簡(jiǎn)潔寫(xiě)法)10. 如何基于Python和Flask編寫(xiě)Prometheus監(jiān)控
