欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pymysql操作mysql數據庫的方法

 更新時間:2023年04月18日 14:14:52   作者:在下周周ovo  
這篇文章主要介紹了pymysql簡單操作mysql數據庫的方法,主要講的是一些基礎的pymysql操作mysql數據庫的方法,結合實例代碼給大家講解的非常詳細,需要的朋友可以參考下

前言

本篇博客主要講的是一些基礎的pymysql操作mysql數據庫的方法,如果有不足之處,歡迎各位指正

??1、pymysql.connent

用法:創(chuàng)建鏈接

語法: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()

用法:創(chuàng)建光標

cursor = conn.cursor()

游標設置為字典類型

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

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

??3、cursor.execute()

用法:執(zhí)行sql語句

cursor.execute(sql)

??4、cursor.executemany()

用法:批量執(zhí)行sql語句

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

??5、cursor.fetchone()

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

import  pymysql
# 創(chuàng)建鏈接,跟socket服務類似
conn = pymysql.connect(host='127.0.0.1', port=3306, 
                 user='root', passwd='@123456', db='db4')
# 創(chuàng)建游標(相當與創(chuàng)建一個拿數據的手)
cursor = conn.cursor()
# 創(chuàng)建要執(zhí)行的SQL語句
sql = "select * from department;"
# 執(zhí)行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’) # 相對絕對位置移動

表結構:

在這里插入圖片描述

栗子:

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;"
# 執(zhí)行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()

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

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

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

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

??10、今日練習

題目要求:

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

題目答案:

【1、創(chuàng)建權限表】

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)建用戶權限關系表】
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')

# 創(chuàng)建光標
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數據庫的方法的文章就介紹到這了,更多相關pymysql操作mysql數據庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL實現字段分割一行轉多行的示例代碼

    MySQL實現字段分割一行轉多行的示例代碼

    這篇文章主要介紹了MySQL實現字段分割一行轉多行的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • MYSQL與SQLserver之間存儲過程的轉換方式

    MYSQL與SQLserver之間存儲過程的轉換方式

    這篇文章主要介紹了MYSQL與SQLserver之間存儲過程的轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL索引失效原因以及SQL查詢語句不走索引原因詳解

    MySQL索引失效原因以及SQL查詢語句不走索引原因詳解

    今天領導在查詢報表時,發(fā)現特別慢,于是引發(fā)一系列關于sql優(yōu)化的工作,下面這篇文章主要給大家介紹了關于MySQL索引失效原因以及SQL查詢語句不走索引原因的相關資料,需要的朋友可以參考下
    2023-03-03
  • MySQL筆記之觸發(fā)器的應用

    MySQL筆記之觸發(fā)器的應用

    觸發(fā)器是由事件來觸發(fā)某個操作,這些事件包括INSERT語句,UPDATE語句和DELETE語句
    2013-05-05
  • navicat無法遠程連接mysql的解決方法

    navicat無法遠程連接mysql的解決方法

    這篇文章主要介紹了navicat無法遠程連接mysql的解決方法,需要的朋友可以參考下
    2014-04-04
  • MySQL數據庫升級的一些

    MySQL數據庫升級的一些"陷阱"

    這篇文章主要介紹了MySQL數據庫升級需要注意的地方,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • 詳解數據庫連接的URL的寫法及總結

    詳解數據庫連接的URL的寫法及總結

    這篇文章主要介紹了詳解數據庫連接的URL的寫法及總結的相關資料這里提供了四種方法1、oracle.2、MySQL.3、SQL Server.4、DB2,需要的朋友可以參考下
    2017-07-07
  • 深入解讀Mysql查詢性能的優(yōu)化

    深入解讀Mysql查詢性能的優(yōu)化

    這篇文章主要介紹了深入解讀Mysql查詢性能的優(yōu)化,如果想要優(yōu)化查詢,就需要優(yōu)化其子任務,要么你就消除其中的一些子任務,要么就減少子任務的執(zhí)行次數,要么就讓子任務運行的更快,需要的朋友可以參考下
    2023-07-07
  • 淺談Mysql在什么情況下會使用內部臨時表

    淺談Mysql在什么情況下會使用內部臨時表

    內部臨時表是一種特殊輕量級的臨時表,本文主要介紹了Mysql在什么情況下會使用內部臨時表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • MySQL通過實例化對象參數查詢實例講解

    MySQL通過實例化對象參數查詢實例講解

    在本篇文章里我們給大家分享了關于MySQL如何通過實例化對象參數查詢數據的相關知識點內容,有需要的朋友們可以測試參考下。
    2018-10-10

最新評論