最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python操作MySQL數(shù)據(jù)庫(kù)實(shí)例詳解【安裝、連接、增刪改查等】

 更新時(shí)間:2020年01月17日 10:07:33   作者:theVicTory  
這篇文章主要介紹了Python操作MySQL數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式詳細(xì)分析了Python操作mysql數(shù)據(jù)庫(kù)的安裝、連接、增刪改查等相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python操作MySQL數(shù)據(jù)庫(kù)。分享給大家供大家參考,具體如下:

1、安裝

通過(guò)Python連接MySQL數(shù)據(jù)庫(kù)有很多庫(kù),這里使用官方推薦的MySQL Connector/Python庫(kù),其官網(wǎng)為:https://dev.mysql.com/doc/connector-python/en/。

通過(guò)pip命令安裝:

pip install mysql-connector-python

默認(rèn)安裝的是最新的版本,我安裝的是8.0.17,對(duì)應(yīng)MySQL的8.0版本。MySQL統(tǒng)一了其相關(guān)工具的大版本號(hào),必須相同或更高才可以兼容。例如我使用的是MySQL8.0,如果使用低于8的mysql-connector就會(huì)報(bào)錯(cuò)。事實(shí)上也是這樣,在某些舊的文檔中提示安裝pip install mysql-connector,就會(huì)安裝較低的版本,在連接MySQL時(shí),會(huì)報(bào)錯(cuò)如下:

mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

這是由于mysql8.0使用了Use Strong Password Encryption for Authentication即強(qiáng)密碼加密,而低版本的mysql-connector采用舊的mysql_native_password加密方式,導(dǎo)致無(wú)法連接,因此注意使用和數(shù)據(jù)庫(kù)相兼容的版本。

2、連接

可以通過(guò)connector類(lèi)的connect()方法進(jìn)行數(shù)據(jù)庫(kù)的連接,傳入服務(wù)器、端口號(hào)、用戶(hù)名、密碼、數(shù)據(jù)庫(kù)等參數(shù),其中服務(wù)器與端口號(hào)可省略,默認(rèn)為localhost:3306。

import mysql.connector
db = mysql.connector.connect(
  host='localhost',
  port='3306',
  user="root",
  password="123456",
  database="test"
)

3、數(shù)據(jù)庫(kù)、表操作

對(duì)數(shù)據(jù)庫(kù)、數(shù)據(jù)表的操作屬于模式定義語(yǔ)言(DDL),所有DDL語(yǔ)句的執(zhí)行都是依賴(lài)于一個(gè)叫cursor的數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的。通過(guò)從connect對(duì)象中獲取cursor對(duì)象后就可以進(jìn)行數(shù)據(jù)庫(kù)、表的相關(guān)操作了。例如創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)、數(shù)據(jù)表

# 獲取數(shù)據(jù)庫(kù)的cursor
cursor = db.cursor()
# 創(chuàng)建數(shù)據(jù)庫(kù)
cursor.execute("CREATE DATABASE mydatabase")
# 創(chuàng)建數(shù)據(jù)表
dbcursor.execute("CREATE TABLE customers (name varchar(255),address varchar(255))")
# 修改表操作
dbcursor.execute('ALTER TABLE customers ADD COLUMN id INT PRIMARY KEY AUTO_INCREMENT')
# 查詢(xún)并打印數(shù)據(jù)庫(kù)中的所有表
cursor.execute("show tables")
for table in cursor:
  print(table)

4、增刪改

插入、刪除、修改操作依舊是通過(guò)cursor對(duì)象來(lái)實(shí)現(xiàn),通過(guò)cursor的execute()方法執(zhí)行SQL操作,第一個(gè)參數(shù)是要執(zhí)行的SQL語(yǔ)句,第二個(gè)參數(shù)是語(yǔ)句中要填充的變量。

在執(zhí)行完所有的SQL操作后記得要通過(guò)數(shù)據(jù)庫(kù)對(duì)象的commit()將操作事務(wù)提交到數(shù)據(jù)庫(kù),如果需要撤銷(xiāo)則通過(guò)rollback()方法回滾操作。

SQL語(yǔ)句中的變量可以用%s的形式作為占位符,然后再以python中元組的形式在執(zhí)行時(shí)將變量填入,如下所示:

值得注意的是無(wú)論是什么類(lèi)型的數(shù)據(jù)在傳入時(shí)都被當(dāng)做字符串類(lèi)型,然后在執(zhí)行SQL操作時(shí)會(huì)將字符串轉(zhuǎn)化為相應(yīng)的類(lèi)型,因此此處的占位符都是%s,而沒(méi)有%d、%f等。

# 要執(zhí)行的SQL語(yǔ)句
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
# 以元組的形式填入數(shù)據(jù)
val = ('Mike', 'Main street 20')
# 執(zhí)行操作
cursor.execute(sql, val)
# 提交事務(wù)
db.commit()

也可以用python中字典的形式填充變量,在SQL語(yǔ)句中的占位符需要使用對(duì)應(yīng)的變量名

# 在SQL語(yǔ)句中指明變量名
sql = "INSERT INTO customers (name, address) VALUES (%(name)s, %(address)s)"
# 以字典的形式填入數(shù)據(jù)
val = {
  'name': 'Alice',
  'address': 'Center street 22'
}
cursor.execute(sql, val)

如果需要一次插入多條數(shù)據(jù),可以使用executemany()方法,將多條數(shù)據(jù)以數(shù)組的方式傳給第二個(gè)參數(shù)。

通過(guò)cursor的rowcount屬性可以返回成功操作的數(shù)據(jù)條數(shù),lastrowid屬性是最后一個(gè)成功插入的行的id

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
# 以數(shù)組的形式填充數(shù)據(jù)
val = [
 ('Peter', 'Lowstreet 4'),
 ('Amy', 'Apple st 652'),
 ('Hannah', 'Mountain 21'),
]
cursor.executemany(sql, val)
print("成功插入%d條數(shù)據(jù),最后一條的id為:%d" % (cursor.rowcount, cursor.lastrowid))

修改、刪除數(shù)據(jù)的方法與插入類(lèi)似,只需要把對(duì)應(yīng)的SQL語(yǔ)句和變量值傳給execute()函數(shù)即可??梢钥闯鯩ySQL-connector庫(kù)的操作是非常貼近原生SQL語(yǔ)言的。

# 修改數(shù)據(jù)
sql = "UPDATE customers SET address=%s WHERE name=%s"
val = ('Center street 21', 'Mike')
cursor.execute(sql, val)
# 刪除數(shù)據(jù)
sql = "DELETE FROM customers WHERE name=%s"
val = ('Hannah',)
cursor.execute(sql, val)

5、查詢(xún)

執(zhí)行查詢(xún)操作和之前類(lèi)似,都是通過(guò)execute()執(zhí)行對(duì)應(yīng)的SQL語(yǔ)句,在執(zhí)行時(shí)將相應(yīng)的數(shù)據(jù)填入即可。查詢(xún)結(jié)束后,結(jié)果集會(huì)保存在cursor當(dāng)中,可以直接把cursor當(dāng)作迭代器iterator來(lái)進(jìn)行展開(kāi)取得結(jié)果集中每條數(shù)據(jù)的對(duì)應(yīng)字段。也可以通過(guò)cursor的fetchall()、fetchone()方法取得所有或一條結(jié)果集。

# 查詢(xún)customers表中id介于6到8之間的數(shù)據(jù)并返回name、address字段
query = "SELECT name,address FROM customers WHERE id BETWEEN %s AND %s"
cursor.execute(query, (6, 8))
# 循環(huán)取出結(jié)果集中的每條數(shù)據(jù)并打印
for (name, address) in cursor:
  print("%s家的地址是%s" % (name, address))
# 輸出結(jié)果為:
# Peter家的地址是Lowstreet 4
# Amy家的地址是Apple st 652
# Hannah家的地址是Mountain 21

通過(guò)原生的SQL語(yǔ)句可以進(jìn)行更為復(fù)雜的查詢(xún)操作,例如通過(guò)where設(shè)置查詢(xún)條件、Order by進(jìn)行字段排序、Limit設(shè)置返回結(jié)果條數(shù)、OFFSET查詢(xún)結(jié)果集的偏移、Join進(jìn)行表連接操作

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》、《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python Pygame實(shí)戰(zhàn)之超級(jí)炸彈人游戲的實(shí)現(xiàn)

    Python Pygame實(shí)戰(zhàn)之超級(jí)炸彈人游戲的實(shí)現(xiàn)

    如今的玩家們?cè)跓o(wú)聊的時(shí)候會(huì)玩些什么游戲呢?王者還是吃雞是最多的選擇。但在80、90年代的時(shí)候多是一些很簡(jiǎn)單的游戲:《超級(jí)瑪麗》、《魂斗羅》等。本文將利用Pygame制作另一個(gè)經(jīng)典游戲—炸彈人,感興趣的可以了解一下
    2022-03-03
  • python基礎(chǔ)之并發(fā)編程(二)

    python基礎(chǔ)之并發(fā)編程(二)

    這篇文章主要介紹了詳解python的并發(fā)編程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • django 基于中間件實(shí)現(xiàn)限制ip頻繁訪(fǎng)問(wèn)過(guò)程詳解

    django 基于中間件實(shí)現(xiàn)限制ip頻繁訪(fǎng)問(wèn)過(guò)程詳解

    這篇文章主要介紹了django 基于中間件實(shí)現(xiàn)限制ip頻繁訪(fǎng)問(wèn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python Pexpect模塊的使用

    python Pexpect模塊的使用

    這篇文章主要介紹了python Pexpect模塊的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python 使用SMTP發(fā)送郵件的代碼小結(jié)

    Python 使用SMTP發(fā)送郵件的代碼小結(jié)

    python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝,需要的朋友可以參考下
    2016-09-09
  • Python使用Yagmail庫(kù)實(shí)現(xiàn)自動(dòng)化郵件營(yíng)銷(xiāo)

    Python使用Yagmail庫(kù)實(shí)現(xiàn)自動(dòng)化郵件營(yíng)銷(xiāo)

    在數(shù)字營(yíng)銷(xiāo)領(lǐng)域,自動(dòng)化郵件營(yíng)銷(xiāo)是一種高效、低成本的方式,能夠幫助企業(yè)與客戶(hù)保持溝通,提升品牌忠誠(chéng)度,而Yagmail是一個(gè)簡(jiǎn)潔且功能強(qiáng)大的Python庫(kù),可以大大簡(jiǎn)化郵件發(fā)送的過(guò)程,本文將詳細(xì)介紹如何使用Yagmail庫(kù)來(lái)實(shí)現(xiàn)自動(dòng)化郵件營(yíng)銷(xiāo),需要的朋友可以參考下
    2024-12-12
  • python滲透測(cè)試linux密碼激活的示例

    python滲透測(cè)試linux密碼激活的示例

    這篇文章主要介紹了python滲透測(cè)試linux密碼激活的相關(guān)知識(shí),通過(guò)一個(gè)crypt的示例給大家介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)python滲透知識(shí)有很大的幫助,需要的朋友可以參考下
    2021-05-05
  • PyTorch 成功安裝驗(yàn)證的方法小結(jié)

    PyTorch 成功安裝驗(yàn)證的方法小結(jié)

    這篇文章主要介紹了PyTorch 成功安裝驗(yàn)證的方法小結(jié),分享幾種驗(yàn)證PyTorch是否安裝成功的方法,確認(rèn)PyTorch是否工作正常非常重要,可以避免后續(xù)的問(wèn)題,需要的朋友可以參考下
    2023-11-11
  • 簡(jiǎn)單實(shí)現(xiàn)python爬蟲(chóng)功能

    簡(jiǎn)單實(shí)現(xiàn)python爬蟲(chóng)功能

    這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單爬蟲(chóng)功能的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2015-12-12
  • pytest使用parametrize將參數(shù)化變量傳遞到fixture

    pytest使用parametrize將參數(shù)化變量傳遞到fixture

    這篇文章主要為大家介紹了pytest使用parametrize將參數(shù)化變量傳遞到fixture的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評(píng)論

正安县| 郴州市| 灯塔市| 石棉县| 延长县| 册亨县| 利津县| 江油市| 海林市| 乐山市| 上栗县| 霍林郭勒市| 布尔津县| 永平县| 习水县| 鄂尔多斯市| 洪湖市| 成都市| 广宁县| 德惠市| 肇东市| 苏尼特右旗| 石林| 广平县| 松溪县| 绩溪县| 连江县| 永兴县| 治县。| 谢通门县| 鄂温| 宁城县| 扶余县| 高唐县| 衡山县| 鄂伦春自治旗| 大庆市| 略阳县| 乌审旗| 成安县| 博乐市|