pymysql操作mysql數(shù)據(jù)庫(kù)的方法
前言
本篇博客主要講的是一些基礎(chǔ)的pymysql操作mysql數(shù)據(jù)庫(kù)的方法,如果有不足之處,歡迎各位指正
??1、pymysql.connent
用法:創(chuàng)建鏈接
語(yǔ)法:conn = pymysql.connect(host=‘127.0.0.1’, port=端口號(hào), user=‘數(shù)據(jù)庫(kù)用戶名’, passwd=‘密碼’, db=‘數(shù)據(jù)庫(kù)名’)
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='@123456', db='db4')
??2、conn.cursor()
用法:創(chuàng)建光標(biāo)
cursor = conn.cursor()
游標(biāo)設(shè)置為字典類型
# 游標(biāo)設(shè)置為字典類型 cursor = conn.cursor("cursor"=pymysql.cursors.DictCursor) 栗子: sql = "select * from department;" # 執(zhí)行sql語(yǔ)句的函數(shù),使用下面函數(shù)進(jìn)行拼接,防止SQL注入 cursor.execute(sql) # cursor.scroll(1,mode='relative') result = cursor.fetchone() print(result) 輸出結(jié)果: {'id': 1, 'title': '財(cái)務(wù)'}
??3、cursor.execute()
用法:執(zhí)行sql語(yǔ)句
cursor.execute(sql)
??4、cursor.executemany()
用法:批量執(zhí)行sql語(yǔ)句
cursor.executemany(sql,[('銷售'), ('經(jīng)理')])
??5、cursor.fetchone()
用法:SQL執(zhí)行select默認(rèn)只是拿一個(gè)結(jié)果,多次執(zhí)行該語(yǔ)句可以依次向下拿數(shù)據(jù)
import pymysql # 創(chuàng)建鏈接,跟socket服務(wù)類似 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='@123456', db='db4') # 創(chuàng)建游標(biāo)(相當(dāng)與創(chuàng)建一個(gè)拿數(shù)據(jù)的手) cursor = conn.cursor() # 創(chuàng)建要執(zhí)行的SQL語(yǔ)句 sql = "select * from department;" # 執(zhí)行sql語(yǔ)句的函數(shù),使用下面函數(shù)進(jìn)行拼接,防止SQL注入 cursor.execute(sql) result = cursor.fetchone() print(result) result = cursor.fetchone() print(result) result = cursor.fetchone() print(result) # 關(guān)閉鏈接 cursor.close() conn.close() · 輸出結(jié)果: (1, '財(cái)務(wù)') (2, '公關(guān)') (3, '測(cè)試')
??6、cursor.scroll()
用法:注:在fetch數(shù)據(jù)時(shí)按照順序進(jìn)行,可以使用cursor.scroll(num,mode)來(lái)移動(dòng)游標(biāo)位置,如:
- cursor.scroll(1,mode=‘relative’) # 相對(duì)當(dāng)前位置移動(dòng)
- cursor.scroll(2,mode=‘absolute’) # 相對(duì)絕對(duì)位置移動(dòng)
表結(jié)構(gòu):
栗子:
1、 cursor.execute(sql) result = cursor.fetchone() print(result) 輸出結(jié)果: (1, '財(cái)務(wù)') 2、 cursor.execute(sql) cursor.scroll(1,mode='absolute') result = cursor.fetchone() print(result) 輸出結(jié)果: (2, '公關(guān)') 3、 cursor.execute(sql) cursor.scroll(1,mode='relative') result = cursor.fetchone() print(result) 輸出結(jié)果: (2, '公關(guān)')
??7、cursor.fetchmany()
用法:可以設(shè)置返回值的個(gè)數(shù)cursor.fetchmany(num)
cursor.execute(sql) # cursor.scroll(1,mode='relative') # result = cursor.fetchone() # print(result) result = cursor.fetchmany(2) print(result) 輸出結(jié)果: ((1, '財(cái)務(wù)'), (2, '公關(guān)'))
??8、cursor.fetchall()
用法:顧名思義就是拿到所有的結(jié)果
sql = "select * from department;" # 執(zhí)行sql語(yǔ)句的函數(shù),使用下面函數(shù)進(jìn)行拼接,防止SQL注入 cursor.execute(sql) # cursor.scroll(1,mode='relative') # result = cursor.fetchone() # print(result) # result = cursor.fetchmany(2) # print(result) result = cursor.fetchall() print(result) 輸出結(jié)果: ((1, '財(cái)務(wù)'), (2, '公關(guān)'), (3, '測(cè)試'), (4, '運(yùn)維'), (5, '銷售'))
??9、cursor.lastrowid()
用法:獲取新創(chuàng)建數(shù)據(jù)自增ID,如果新增加了多條數(shù)據(jù)只返回最后插入的那條數(shù)據(jù)的自增id
PS:如果只想一個(gè)一個(gè)拿id只能夠一個(gè)一個(gè)插入???????
sql = "insert into department(title) values(%s)" cursor.executemany(sql,[('經(jīng)理')]) # 獲取插入值的自增id print(cursor.lastrowid) # 將執(zhí)行的結(jié)果提交到表中,否則表不會(huì)發(fā)生變換 conn.commit() 輸出結(jié)果: 6
??10、今日練習(xí)
題目要求:
練習(xí):
權(quán)限管理
權(quán)限表:
1、訂單管理
2、用戶管理
3、菜單管理
4、權(quán)限分配
5、Bug管理
用戶表:
1、蔡徐坤
2、雞哥
3、坤哥
用戶關(guān)系權(quán)限表:
1 1
1 2
2 1
Python實(shí)現(xiàn):
某個(gè)用戶登入后,可以查看自己的所有權(quán)限
題目答案:
【1、創(chuàng)建權(quán)限表】 CREATE TABLE power ( pid INT auto_increment PRIMARY KEY, purview CHAR(10) )ENGINE= INNODB DEFAULT CHARSET= utf8; 【2、創(chuàng)建用戶表】 CREATE TABLE users ( uid INT auto_increment PRIMARY KEY, username CHAR(10) )ENGINE= INNODB DEFAULT CHARSET= utf8; 【3、創(chuàng)建用戶權(quán)限關(guān)系表】 CREATE TABLE use_pow ( upid INT auto_increment PRIMARY KEY, power_id INT, user_id INT, UNIQUE uq_pid_uid(power_id, user_id), CONSTRAINT fk_pow FOREIGN KEY (power_id) REFERENCES power(pid), CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(uid) )ENGINE= INNODB DEFAULT CHARSET= utf8; py文件: import pymysql user = input('請(qǐng)輸入用戶名稱>>>') # 連接數(shù)據(jù)庫(kù) conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='@123456', db='db_grant') # 創(chuàng)建光標(biāo) cursor = conn.cursor() # 查詢是否存在該用戶 sql = "SELECT uid FROM users WHERE username = %(u)s" cursor.execute(sql, {'u': user}) # 獲取到用戶的id uid = cursor.fetchone() # print(uid[0], type(uid[0])) if uid: # 這里的%s如果換成%d就會(huì)報(bào)錯(cuò)因?yàn)閑xecute無(wú)論傳入什么類型都要用%s來(lái)占位 sql2 = "SELECT purview from power WHERE pid in (SELECT power_id FROM use_pow WHERE user_id = %s)" cursor.execute(sql2, uid[0]) result = cursor.fetchall() print(result) else: print("沒(méi)有該用戶") cursor.close() conn.close()
到此這篇關(guān)于pymysql簡(jiǎn)單操作mysql數(shù)據(jù)庫(kù)的方法的文章就介紹到這了,更多相關(guān)pymysql操作mysql數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python?實(shí)現(xiàn)?pymysql?數(shù)據(jù)庫(kù)操作方法
- python pymysql鏈接數(shù)據(jù)庫(kù)查詢結(jié)果轉(zhuǎn)為Dataframe實(shí)例
- 使用pymysql查詢數(shù)據(jù)庫(kù),把結(jié)果保存為列表并獲取指定元素下標(biāo)實(shí)例
- python數(shù)據(jù)庫(kù)操作mysql:pymysql、sqlalchemy常見(jiàn)用法詳解
- 在python中使用pymysql往mysql數(shù)據(jù)庫(kù)中插入(insert)數(shù)據(jù)實(shí)例
- Python使用pymysql從MySQL數(shù)據(jù)庫(kù)中讀出數(shù)據(jù)的方法
- python3.6使用pymysql連接Mysql數(shù)據(jù)庫(kù)
相關(guān)文章
MySQL實(shí)現(xiàn)字段分割一行轉(zhuǎn)多行的示例代碼
這篇文章主要介紹了MySQL實(shí)現(xiàn)字段分割一行轉(zhuǎn)多行的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07MYSQL與SQLserver之間存儲(chǔ)過(guò)程的轉(zhuǎn)換方式
這篇文章主要介紹了MYSQL與SQLserver之間存儲(chǔ)過(guò)程的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11MySQL索引失效原因以及SQL查詢語(yǔ)句不走索引原因詳解
今天領(lǐng)導(dǎo)在查詢報(bào)表時(shí),發(fā)現(xiàn)特別慢,于是引發(fā)一系列關(guān)于sql優(yōu)化的工作,下面這篇文章主要給大家介紹了關(guān)于MySQL索引失效原因以及SQL查詢語(yǔ)句不走索引原因的相關(guān)資料,需要的朋友可以參考下2023-03-03navicat無(wú)法遠(yuǎn)程連接mysql的解決方法
這篇文章主要介紹了navicat無(wú)法遠(yuǎn)程連接mysql的解決方法,需要的朋友可以參考下2014-04-04MySQL數(shù)據(jù)庫(kù)升級(jí)的一些"陷阱"
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)升級(jí)需要注意的地方,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08詳解數(shù)據(jù)庫(kù)連接的URL的寫(xiě)法及總結(jié)
這篇文章主要介紹了詳解數(shù)據(jù)庫(kù)連接的URL的寫(xiě)法及總結(jié)的相關(guān)資料這里提供了四種方法1、oracle.2、MySQL.3、SQL Server.4、DB2,需要的朋友可以參考下2017-07-07淺談Mysql在什么情況下會(huì)使用內(nèi)部臨時(shí)表
內(nèi)部臨時(shí)表是一種特殊輕量級(jí)的臨時(shí)表,本文主要介紹了Mysql在什么情況下會(huì)使用內(nèi)部臨時(shí)表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10MySQL通過(guò)實(shí)例化對(duì)象參數(shù)查詢實(shí)例講解
在本篇文章里我們給大家分享了關(guān)于MySQL如何通過(guò)實(shí)例化對(duì)象參數(shù)查詢數(shù)據(jù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以測(cè)試參考下。2018-10-10