<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在編寫小指令碼時,PyMysql是快速連線並運算元據庫的一個不錯選擇。
pip3 install PyMysql # 可使用 pip list 檢視此環境安裝了哪些第三方庫 pip list | grep PyMysql
import pymysql
使用connect函數建立連線物件,此連線物件提供關閉資料庫、事務回滾等操作
一般傳參為:host, user, password, port(預設為3306), database(想要連線的資料庫名)
db = pymysql.connect(host='127.0.0.1', user='root', password='pwd', database='database_name')
連線物件的常見方法:
方法名 | 說明 |
---|---|
cursor() | 獲取遊標物件,運算元據庫,如執行DML操作,呼叫儲存過程等 |
commit() | 提交事務 |
rollback() | 回滾事務 |
close() | 關閉資料庫連線 |
運算元據庫主要使用cursor遊標物件,對資料庫進行操作
cursor遊標物件的常見方法
方法名 | 說明 |
---|---|
close() | 關閉當前遊標物件 |
execute(query) | 執行資料庫操作,如sql語句或資料庫命令 |
executemany(query,params) | 用於批次操作,如:批次更新 |
fetchone() | 獲取查詢結果集中的下一條記錄 |
fetchmany(size) | 獲取查詢結果集中指定數量的記錄,size預設為1 |
fetchall() | 獲取查詢結果集中所有記錄 |
nextset() | 跳至下一個可用的結果集 |
fetchone(),fetchmany(size),fetchall() 三者的返回值都是元組 或 元組的巢狀 查
查詢主要獲取結果集,注意fetchone 得到的是元組, fetchmany(size),fetchall()得到的是元組的巢狀
注意:
如果既要使用python的字串解析%,sql語句中又包含sql的模糊查詢預留位置%, 模糊查詢使用%%即可,這樣不會報錯
import pymysql # 建立資料庫連線物件 db = pymysql.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') # 建立遊標物件 cursor = db.cursor() table_name = 'map_point' sql = "SELECT * FROM %s WHERE username LIKE 'DL%%' " % table_name try: cursor.execute(sql) # 執行sql語句,也可執行資料庫命令,如:show tables result = cursor.fetchall() # 所有結果 print(result) except Exception as e: db.rollback() print("查詢失敗") print(e) finally: cursor.close() # 關閉當前遊標 db.close() # 關閉資料庫連線
迴圈查詢:
在一些場景中,需要進行迴圈查詢,判斷,此時在執行完execute查詢語句後,務必進行commit提交,否則每次查詢到的資料都是之前查詢結果的快照,也就是舊資料。
或者採用第二種方案,建立connect連線時,增添autocommit=True屬性,自動進行commit提交。
增,刪,改
增刪改需要有提交事務的操作,查不需要提交事務,但如果迴圈查詢,務必提交事務,否則結果都是重複的
建立連線物件——db= pymysql()
建立cursor遊標物件——cur = db.cursor()
資料操作——cur.execute(sql)
提交連線事務——db.commit()
關閉cursor遊標物件——cur.close()
關閉連線物件——db.close( )
import pymysql # 建立資料庫連線物件 db = pymysql.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') # 建立遊標物件 cursor = db.cursor() table_name = 'table_name ' user_id = 'yyy' user_no = 'xxx' sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, user_no, user_id) try: cursor.execute(sql) # 執行sql語句,也可執行資料庫命令,如:show tables db.commit() # 增刪改,必須執行事務 print("資料更新成功") except Exception as e: db.rollback() # 若出現失敗,進行回滾 print("資料更新失敗") print(e) finally: cursor.close() # 關閉當前遊標 db.close() # 關閉資料庫連線
使用迴圈批次更新
db = pymysql.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') table_name = 'table_name' update_list = ['xxx2', 'xxxx3'] condition_list = ['xxx', 'xxx1'] # 條件集合,更新集合長度相等時可使用,可根據其他情況重新編寫 cursor = db.cursor() for i in range(len(condition_list)): sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, update_list[i], condition_list[i]) print('執行sql語句:' + sql) try: cursor.execute(sql) db.commit() print("資料更新成功" + str(i+1) + '條') except Exception as e: db.rollback() print("資料更新失敗") print(e) cursor.close() db.close()
使用executemany(query, param) 批次更新
params為每條記錄的維度,可為巢狀陣列和元組
注意:sql語句中需要更改的資料不管什麼型別,統一使用%s作為預留位置,不需要加引號
# 建立資料庫連線物件 db = pymysql.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') # 建立遊標物件 cursor = db.cursor() update_list = ['a', 'b'] condition_list = ['a1', 'b1'] # 條件陣列和需要更新的資料陣列是分開的,因為param需要以每條的維度,所以可以使用拉鍊函數合併 params = zip(update_list, condition_list) # 或 param = [['a', 'a1'], ['b', 'b1']] sql = "UPDATE map_point SET storageLocation_no = %s WHERE position_id = %s" # 注意 這裡的 佔位%s 都不用加引號 try: cursor.executemany(sql, params) # 執行sql語句 db.commit() # 執行事務 print("資料批次更新成功") except Exception as e: db.rollback() print("資料更新失敗") print(e) finally: cursor.close() # 關閉當前遊標 db.close() # 關閉資料庫連線
到此這篇關於python資料庫操作指南之PyMysql使用詳解的文章就介紹到這了,更多相關python資料庫操作PyMysql使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45