中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pymysql怎么操作mysql數據庫

發布時間:2023-04-18 15:58:41 來源:億速云 閱讀:107 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“pymysql怎么操作mysql數據庫”,內容詳細,步驟清晰,細節處理妥當,希望這篇“pymysql怎么操作mysql數據庫”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1、pymysql.connent

用法:創建鏈接

語法:conn = pymysql.connect(host=‘127.0.0.1’, port=端口號, user=‘數據庫用戶名’, passwd=‘密碼’, db=‘數據庫名’)

conn = pymysql.connect(host='127.0.0.1', 
                 port=3306, user='root', passwd='@123456', db='db4')

2、conn.cursor()

用法:創建光標

cursor = conn.cursor()

游標設置為字典類型

# 游標設置為字典類型
cursor = conn.cursor("cursor"=pymysql.cursors.DictCursor)

栗子:
sql = "select * from department;"
# 執行sql語句的函數,使用下面函數進行拼接,防止SQL注入
cursor.execute(sql)
# cursor.scroll(1,mode='relative')
result = cursor.fetchone()
print(result)
輸出結果:
{'id': 1, 'title': '財務'}

3、cursor.execute()

用法:執行sql語句

cursor.execute(sql)

4、cursor.executemany()

用法:批量執行sql語句

cursor.executemany(sql,[('銷售'), ('經理')])

5、cursor.fetchone()

用法:SQL執行select默認只是拿一個結果,多次執行該語句可以依次向下拿數據

import  pymysql
# 創建鏈接,跟socket服務類似
conn = pymysql.connect(host='127.0.0.1', port=3306, 
                 user='root', passwd='@123456', db='db4')
# 創建游標(相當與創建一個拿數據的手)
cursor = conn.cursor()
# 創建要執行的SQL語句
sql = "select * from department;"
# 執行sql語句的函數,使用下面函數進行拼接,防止SQL注入
cursor.execute(sql)
result = cursor.fetchone()
print(result)
result = cursor.fetchone()
print(result)
result = cursor.fetchone()
print(result)
# 關閉鏈接
cursor.close()
conn.close()
·
輸出結果:
(1, '財務')
(2, '公關')
(3, '測試')

6、cursor.scroll()

用法:注:在fetch數據時按照順序進行,可以使用cursor.scroll(num,mode)來移動游標位置,如:

  • cursor.scroll(1,mode=‘relative’) # 相對當前位置移動

  • cursor.scroll(2,mode=‘absolute’) # 相對絕對位置移動

表結構:

pymysql怎么操作mysql數據庫

栗子:

1、
cursor.execute(sql)
result = cursor.fetchone()
print(result)
輸出結果:
(1, '財務')
2、
cursor.execute(sql)
cursor.scroll(1,mode='absolute')
result = cursor.fetchone()
print(result)
輸出結果:
(2, '公關')
3、
cursor.execute(sql)
cursor.scroll(1,mode='relative')
result = cursor.fetchone()
print(result)
輸出結果:
(2, '公關')

7、cursor.fetchmany()

用法:可以設置返回值的個數cursor.fetchmany(num)

cursor.execute(sql)
# cursor.scroll(1,mode='relative')
# result = cursor.fetchone()
# print(result)
result = cursor.fetchmany(2)
print(result)
輸出結果:
((1, '財務'), (2, '公關'))

8、cursor.fetchall()

用法:顧名思義就是拿到所有的結果

sql = "select * from department;"
# 執行sql語句的函數,使用下面函數進行拼接,防止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)
輸出結果:
((1, '財務'), (2, '公關'), (3, '測試'), (4, '運維'), (5, '銷售'))

9、cursor.lastrowid()

用法:獲取新創建數據自增ID,如果新增加了多條數據只返回最后插入的那條數據的自增id

PS:如果只想一個一個拿id只能夠一個一個插入

sql = "insert into department(title) values(%s)"

cursor.executemany(sql,[('經理')])
# 獲取插入值的自增id
print(cursor.lastrowid)
# 將執行的結果提交到表中,否則表不會發生變換
conn.commit()
輸出結果:
6

10、今日練習

題目要求:

練習:
    權限管理
        權限表:
            1、訂單管理
            2、用戶管理
            3、菜單管理
            4、權限分配
            5、Bug管理
        用戶表:
            1、蔡徐坤
            2、雞哥
            3、坤哥
        用戶關系權限表:
            1    1
            1    2
            2    1
Python實現:
    某個用戶登入后,可以查看自己的所有權限

題目答案:

【1、創建權限表】

CREATE TABLE power (
	pid INT auto_increment PRIMARY KEY,
	purview	CHAR(10)
)ENGINE= INNODB DEFAULT CHARSET= utf8;

【2、創建用戶表】
CREATE TABLE users (
	uid INT auto_increment PRIMARY KEY,
	username	CHAR(10)
)ENGINE= INNODB DEFAULT CHARSET= utf8;

【3、創建用戶權限關系表】
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('請輸入用戶名稱>>>')
# 連接數據庫
conn  = pymysql.connect(host='127.0.0.1', port=3306, 
                  user='root', passwd='@123456', db='db_grant')

# 創建光標
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就會報錯因為execute無論傳入什么類型都要用%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數據庫”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆化县| 南宫市| 天峻县| 海晏县| 西和县| 田阳县| 广德县| 古浪县| 哈巴河县| 吉首市| 福清市| 岚皋县| 凌源市| 墨竹工卡县| 封开县| 阿勒泰市| 松溪县| 石渠县| 比如县| 澜沧| 山西省| 海宁市| 和平县| 宣汉县| 改则县| 安宁市| 清丰县| 三河市| 大兴区| 渝北区| 巴塘县| 大安市| 蓬莱市| 门头沟区| 曲水县| 临邑县| 阳原县| 双峰县| 西城区| 余姚市| 天柱县|