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