使用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 mdb import sys #獲取數(shù)據(jù)庫(kù)的鏈接對(duì)象 con = mdb.connect('localhost', 'root', 'root', 'test') with con: #獲取普通的查詢 cursor cur = con.cursor() cur.execute("SELECT * FROM Writers") rows = cur.fetchall() #獲取連接對(duì)象的描述信息 desc = cur.description print '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 mdb import sys try: #連接 mysql,獲取連接的對(duì)象 conn = mdb.connect('localhost', 'root', 'root', 'test'); cursor = conn.cursor() #執(zhí)行查詢?cè)搱D片字段的 SQL cursor.execute("SELECT Data FROM Images LIMIT 1") #使用二進(jìn)制寫文件的方法,打開一個(gè)圖片文件,若不存在則自動(dòng)創(chuàng)建 fout = open('image.png','wb') #直接將數(shù)據(jù)如文件 fout.write(cursor.fetchone()[0]) #關(guān)閉寫入的文件 fout.close() #釋放查詢數(shù)據(jù)的資源 cursor.close() conn.close() except IOError, e: #捕獲 IO 的異常 ,主要是文件寫入會(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)注腳本之家其它相關(guān)文章!
- pymysql實(shí)現(xiàn)增刪改查的操作指南(python)
- Python基礎(chǔ)之操作MySQL數(shù)據(jù)庫(kù)
- python操作mysql、excel、pdf的示例
- python安裝mysql的依賴包mysql-python操作
- Python pymysql模塊安裝并操作過(guò)程解析
- python如何操作mysql
- Python連接mysql數(shù)據(jù)庫(kù)及簡(jiǎn)單增刪改查操作示例代碼
- Python操作MySQL數(shù)據(jù)庫(kù)的示例代碼
- python3 使用openpyxl將mysql數(shù)據(jù)寫入xlsx的操作
- 教你怎么用Python操作MySql數(shù)據(jù)庫(kù)
相關(guān)文章
Python數(shù)據(jù)結(jié)構(gòu)與算法的雙端隊(duì)列詳解
這篇文章主要為大家詳細(xì)介紹了Python的雙端隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03淺談Python 多進(jìn)程默認(rèn)不能共享全局變量的問(wèn)題
今天小編就為大家分享一篇淺談Python 多進(jìn)程默認(rèn)不能共享全局變量的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python sklearn KFold 生成交叉驗(yàn)證數(shù)據(jù)集的方法
今天小編就為大家分享一篇Python sklearn KFold 生成交叉驗(yàn)證數(shù)據(jù)集的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python的Django框架中URLconf相關(guān)的一些技巧整理
這篇文章主要介紹了Python的Django框架中URLconf相關(guān)的一些技巧整理,包括視圖配置和debug的示例等,需要的朋友可以參考下2015-07-07pip install過(guò)程中出現(xiàn)error: subprocess-exited-with-erro
在Python環(huán)境配置過(guò)程中,經(jīng)常會(huì)遇到各種安裝錯(cuò)誤,其中一個(gè)常見的錯(cuò)誤是 pip install 過(guò)程中出現(xiàn)的 error: subprocess-exited-with-error,在本文中,我將詳細(xì)解析這個(gè)錯(cuò)誤的原因,并提供具體的解決方案和步驟,確保大家能夠順利完成安裝,避免類似問(wèn)題的再次發(fā)生2024-07-07