Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實(shí)例
Python 中貌似并沒(méi)有直接返回插入數(shù)據(jù) id 的操作(反正我是沒(méi)找到),但是我們可以變通一下,找到最新插入的數(shù)據(jù)
#!/usr/bin/env python3# -*- coding: UTF-8 -*- import pymysql db = pymysql.connect(**db_conf)cursor = db.cursor()cursor.execute(sql)# 最后插入行的主鍵idprint(cursor.lastrowid)# 最新插入行的主鍵idprint(conn.insert_id())conn.commit()
使用 cursor.lastrowid 和 conn.insert_id() 時(shí)一定要在 conn.commit() 之前
由于數(shù)據(jù)庫(kù)的安全機(jī)制決定,其中一個(gè)進(jìn)程執(zhí)行完成一條語(yǔ)句時(shí),此時(shí)只有這個(gè)進(jìn)程能看到數(shù)據(jù)。如果想要其他的進(jìn)程也能看到數(shù)據(jù),就需要使用 conn.commit() 提交,這樣就保證了多進(jìn)程同時(shí)操作數(shù)據(jù)庫(kù)而不會(huì)沖突
但是多線程并發(fā)插入的時(shí)候就不行了,因?yàn)槎嗑€程是共享數(shù)據(jù)的,而且在 Python 中并沒(méi)有所謂的真正多線程,建議使用多進(jìn)程
補(bǔ)充拓展:mysql中插入一條數(shù)據(jù)后得到插入后的主鍵id值
** 當(dāng)我們涉及多表進(jìn)行插入操作是,常常需要在程序中等到剛剛插入數(shù)據(jù)的主鍵Id,便與進(jìn)行多表關(guān)聯(lián) **
那么便需要在*Mapper.xml的insert方法前插入以下代碼即可:
<selectKey resultType='java.lang.Long' order='AFTER' keyProperty='id'> SELECT LAST_INSERT_ID() AS id </selectKey>
以上這篇Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Spring security 自定義過(guò)濾器實(shí)現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實(shí)例代碼)2. Java8內(nèi)存模型PermGen Metaspace實(shí)例解析3. python學(xué)習(xí)之plot函數(shù)的使用教程4. 一文搞懂 parseInt()函數(shù)異常行為5. 聊聊python在linux下與windows下導(dǎo)入模塊的區(qū)別說(shuō)明6. python 實(shí)現(xiàn)"神經(jīng)衰弱"翻牌游戲7. Python基于百度AI實(shí)現(xiàn)抓取表情包8. ASP.NET MVC使用正則表達(dá)式驗(yàn)證手機(jī)號(hào)碼9. python tkinter實(shí)現(xiàn)下載進(jìn)度條及抖音視頻去水印原理10. python中用Scrapy實(shí)現(xiàn)定時(shí)爬蟲的實(shí)例講解
