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

溫馨提示×

溫馨提示×

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

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

如何使用Python操作MySQL數據庫

發布時間:2021-05-26 11:18:02 來源:億速云 閱讀:189 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關如何使用Python操作MySQL數據庫,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1、安裝

通過Python連接MySQL數據庫有很多庫,這里使用官方推薦的MySQL Connector/Python庫

通過pip命令安裝:

pip install mysql-connector-python

默認安裝的是最新的版本,我安裝的是8.0.17,對應MySQL的8.0版本。MySQL統一了其相關工具的大版本號,必須相同或更高才可以兼容。例如我使用的是MySQL8.0,如果使用低于8的mysql-connector就會報錯。事實上也是這樣,在某些舊的文檔中提示安裝pip install mysql-connector,就會安裝較低的版本,在連接MySQL時,會報錯如下:

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

這是由于mysql8.0使用了Use Strong Password Encryption for Authentication即強密碼加密,而低版本的mysql-connector采用舊的mysql_native_password加密方式,導致無法連接,因此注意使用和數據庫相兼容的版本。

2、連接

可以通過connector類的connect()方法進行數據庫的連接,傳入服務器、端口號、用戶名、密碼、數據庫等參數,其中服務器與端口號可省略,默認為localhost:3306。

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

3、數據庫、表操作

對數據庫、數據表的操作屬于模式定義語言(DDL),所有DDL語句的執行都是依賴于一個叫cursor的數據結構進行操作的。通過從connect對象中獲取cursor對象后就可以進行數據庫、表的相關操作了。例如創建一個數據庫、數據表

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

4、增刪改

插入、刪除、修改操作依舊是通過cursor對象來實現,通過cursor的execute()方法執行SQL操作,第一個參數是要執行的SQL語句,第二個參數是語句中要填充的變量。

在執行完所有的SQL操作后記得要通過數據庫對象的commit()將操作事務提交到數據庫,如果需要撤銷則通過rollback()方法回滾操作。

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

值得注意的是無論是什么類型的數據在傳入時都被當做字符串類型,然后在執行SQL操作時會將字符串轉化為相應的類型,因此此處的占位符都是%s,而沒有%d、%f等。

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

也可以用python中字典的形式填充變量,在SQL語句中的占位符需要使用對應的變量名

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

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

通過cursor的rowcount屬性可以返回成功操作的數據條數,lastrowid屬性是最后一個成功插入的行的id

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

修改、刪除數據的方法與插入類似,只需要把對應的SQL語句和變量值傳給execute()函數即可。可以看出MySQL-connector庫的操作是非常貼近原生SQL語言的。

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

5、查詢

執行查詢操作和之前類似,都是通過execute()執行對應的SQL語句,在執行時將相應的數據填入即可。查詢結束后,結果集會保存在cursor當中,可以直接把cursor當作迭代器iterator來進行展開取得結果集中每條數據的對應字段。也可以通過cursor的fetchall()、fetchone()方法取得所有或一條結果集。

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

通過原生的SQL語句可以進行更為復雜的查詢操作,例如通過where設置查詢條件、Order by進行字段排序、Limit設置返回結果條數、OFFSET查詢結果集的偏移、Join進行表連接操作

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

關于如何使用Python操作MySQL數據庫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

锡林浩特市| 屯昌县| 博白县| 逊克县| 莱西市| 栖霞市| 新沂市| 昌图县| 洛南县| 义乌市| 岐山县| 武川县| 连州市| 聂荣县| 庆元县| 泰顺县| 昆山市| 高安市| 清新县| 聂荣县| 天柱县| 古蔺县| 罗平县| 南雄市| 汕尾市| 闵行区| 宁晋县| 麦盖提县| 临漳县| 和政县| 南部县| 江北区| 宁都县| 北川| 上杭县| 曲沃县| 灵川县| 福清市| 天等县| 台南市| 丹阳市|