您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“pymysql怎么操作mysql數(shù)據(jù)庫”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“pymysql怎么操作mysql數(shù)據(jù)庫”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
用法:創(chuàng)建鏈接
語法:conn = pymysql.connect(host=‘127.0.0.1’, port=端口號, user=‘數(shù)據(jù)庫用戶名’, passwd=‘密碼’, db=‘數(shù)據(jù)庫名’)
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='@123456', db='db4')
用法:創(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語句的函數(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ù)'}
用法:執(zhí)行sql語句
cursor.execute(sql)
用法:批量執(zhí)行sql語句
cursor.executemany(sql,[('銷售'), ('經(jīng)理')])
用法:SQL執(zhí)行select默認(rèn)只是拿一個(gè)結(jié)果,多次執(zhí)行該語句可以依次向下拿數(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語句 sql = "select * from department;" # 執(zhí)行sql語句的函數(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, '測試')
用法:注:在fetch數(shù)據(jù)時(shí)按照順序進(jìn)行,可以使用cursor.scroll(num,mode)來移動(dòng)游標(biāo)位置,如:
cursor.scroll(1,mode=‘relative’) # 相對當(dāng)前位置移動(dòng)
cursor.scroll(2,mode=‘absolute’) # 相對絕對位置移動(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)')
用法:可以設(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)'))
用法:顧名思義就是拿到所有的結(jié)果
sql = "select * from department;" # 執(zhí)行sql語句的函數(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, '測試'), (4, '運(yùn)維'), (5, '銷售'))
用法:獲取新創(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
題目要求:
練習(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('請輸入用戶名稱>>>') # 連接數(shù)據(jù)庫 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無論傳入什么類型都要用%s來占位 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("沒有該用戶") cursor.close() conn.close()
讀到這里,這篇“pymysql怎么操作mysql數(shù)據(jù)庫”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。