Python 3 – MySQL數(shù)據(jù)庫(kù)訪問
MySQL是一種流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),而Python 3是一個(gè)功能強(qiáng)大的編程語(yǔ)言,它具有可以簡(jiǎn)化MySQL數(shù)據(jù)庫(kù)訪問的一些內(nèi)置模塊和擴(kuò)展包。愛掏網(wǎng) - it200.com
在本文中,我們將演示如何使用Python 3實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的連接、數(shù)據(jù)查詢、數(shù)據(jù)更新、數(shù)據(jù)插入和數(shù)據(jù)刪除等操作。愛掏網(wǎng) - it200.com
安裝MySQL數(shù)據(jù)庫(kù)
在開始之前,我們需要先安裝MySQL數(shù)據(jù)庫(kù)。愛掏網(wǎng) - it200.com對(duì)于Windows用戶,可以直接前往MySQL官方網(wǎng)站(https://dev.mysql.com/downloads/windows/installer/)下載安裝程序。愛掏網(wǎng) - it200.com對(duì)于Linux用戶,則可以通過如下命令進(jìn)行安裝:
sudo apt-get update
sudo apt-get install mysql-server
在安裝完成后,我們需要建立一個(gè)數(shù)據(jù)庫(kù),可以通過如下命令進(jìn)行創(chuàng)建:
mysql -u root -p
create database testdb;
連接MySQL數(shù)據(jù)庫(kù)
在Python 3中,我們可以使用PyMySQL模塊來(lái)連接MySQL數(shù)據(jù)庫(kù)。愛掏網(wǎng) - it200.com可以通過以下方式安裝PyMySQL模塊:
pip3 install pymysql
接下來(lái),我們可以使用下面的代碼來(lái)連接數(shù)據(jù)庫(kù):
import pymysql
# 打開數(shù)據(jù)庫(kù)連接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用cursor()方法獲取操作游標(biāo)
cursor = db.cursor()
# 執(zhí)行SQL語(yǔ)句
cursor.execute("SELECT VERSION()")
# 獲取一條數(shù)據(jù)
data = cursor.fetchone()
print("Database version : %s " % data)
# 關(guān)閉游標(biāo)和數(shù)據(jù)庫(kù)連接
cursor.close()
db.close()
上述代碼中,我們使用pymysql庫(kù)的connect()方法來(lái)連接數(shù)據(jù)庫(kù)。愛掏網(wǎng) - it200.com其中,參數(shù)”localhost”代表數(shù)據(jù)庫(kù)所在的主機(jī)ip地址,”root”代表登錄數(shù)據(jù)庫(kù)時(shí)的用戶名,”password”代表登錄數(shù)據(jù)庫(kù)時(shí)的密碼,”testdb”代表將要連接的數(shù)據(jù)庫(kù)名稱。愛掏網(wǎng) - it200.com
接下來(lái),我們使用cursor()方法獲取操作游標(biāo),并使用execute()方法來(lái)執(zhí)行SQL語(yǔ)句。愛掏網(wǎng) - it200.com最后,我們使用fetchone()方法獲取第一條數(shù)據(jù),并輸出結(jié)果。愛掏網(wǎng) - it200.com
數(shù)據(jù)查詢
在Python 3中,我們可以使用SELECT語(yǔ)句來(lái)查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)。愛掏網(wǎng) - it200.com具體方式如下:
import pymysql
# 打開數(shù)據(jù)庫(kù)連接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用cursor()方法獲取操作游標(biāo)
cursor = db.cursor()
# SQL 查詢語(yǔ)句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
try:
# 執(zhí)行SQL語(yǔ)句
cursor.execute(sql)
# 獲取所有記錄列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印結(jié)果
print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income))
except:
print("Error: unable to fetch data")
# 關(guān)閉游標(biāo)和數(shù)據(jù)庫(kù)連接
cursor.close()
db.close()
上述代碼中,我們使用SELECT語(yǔ)句查詢出了所有收入大于1000的員工信息,并使用fetchall()方法獲取所有記錄列表。愛掏網(wǎng) - it200.com接下來(lái),我們使用for循環(huán)來(lái)遍歷每一條記錄,并輸出結(jié)果。愛掏網(wǎng) - it200.com
數(shù)據(jù)更新
在Python 3中,我們可以使用UPDATE語(yǔ)句來(lái)更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)。愛掏網(wǎng) - it200.com下面是一個(gè)示例代碼:
import pymysql
# 打開數(shù)據(jù)庫(kù)連接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用cursor()方法獲取操作游標(biāo)
cursor = db.cursor()
# SQL 更新語(yǔ)句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 \
WHERE SEX = '%c'" % ('M')
try:
# 執(zhí)行SQL語(yǔ)句
cursor.execute(sql)
# 提交到數(shù)據(jù)庫(kù)執(zhí)行
db.commit()
except:
# 發(fā)生錯(cuò)誤時(shí)回滾
db.rollback()
# 關(guān)閉游標(biāo)和數(shù)據(jù)庫(kù)連接
cursor.close()
db.close()
上述代碼中,我們使用UPDATE語(yǔ)句來(lái)將所有男性員工的年齡增加1。愛掏網(wǎng) - it200.com接下來(lái),我們使用execute()方法執(zhí)行SQL語(yǔ)句,并在執(zhí)行成功后使用commit()方法提交更改。愛掏網(wǎng) - it200.com
數(shù)據(jù)插入
在Python 3中,我們可以使用INSERT語(yǔ)句向數(shù)據(jù)庫(kù)中插入新的數(shù)據(jù)。愛掏網(wǎng) - it200.com下面是一個(gè)示例代碼:
import pymysql
# 打開數(shù)據(jù)庫(kù)連接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用cursor()方法獲取操作游標(biāo)
cursor = db.cursor()
# SQL 插入語(yǔ)句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
('John', 'Doe', 25, 'M', 2000)
try:
# 執(zhí)行SQL語(yǔ)句
cursor.execute(sql)
# 提交到數(shù)據(jù)庫(kù)執(zhí)行
db.commit()
except:
# 發(fā)生錯(cuò)誤時(shí)回滾
db.rollback()
# 關(guān)閉游標(biāo)和數(shù)據(jù)庫(kù)連接
cursor.close()
db.close()
上述代碼中,我們使用INSERT語(yǔ)句向EMPLOYEE表中插入一條新記錄。愛掏網(wǎng) - it200.com接下來(lái),我們使用execute()方法執(zhí)行SQL語(yǔ)句,并在執(zhí)行成功后使用commit()方法提交更改。愛掏網(wǎng) - it200.com
數(shù)據(jù)刪除
在Python 3中,我們可以使用DELETE語(yǔ)句來(lái)從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)。愛掏網(wǎng) - it200.com下面是一個(gè)示例代碼: