PyMySQL 是在 Python3.x 版本中用於連接 MySQL 服務器的一個庫,Python2 中則使用 mysqldb。
PyMySQL 安裝
我們可以使用以下命令安裝最新版的 PyMySQL:
$ pip3 install PyMySQL
數據庫連接
import pymysql
# 連接數據庫
db = pymysql.connect(
host='localhost',
user='root',
passwd='your-passwd',
database='test',
)
# 使用sursor()方法創建一個游標對象my_cursor
my_cursor = db.cursor()
sql = 'select @@version'
# 使用execute()方法進行sql查詢
my_cursor.execute(sql)
# 使用fetchone()方法獲取單條數據
rs = my_cursor.fetchone()
print("Database version : ", rs)
# 關閉數據庫連接
db.close()
輸出結果如下
Database version : (‘8.0.26’,)
創建數據庫表
創建數據表使用 create table 語句
import pymysql
# 連接數據庫
db = pymysql.connect(
host='localhost',
user='root',
passwd='your-passwd',
database='test',
)
# 使用sursor()方法創建一個游標對象my_cursor
my_cursor = db.cursor()
sql = 'create table users(id int PRIMARY KEY, name varchar(10), age int, sex varchar(10))'
# 使用execute()方法執行sql語句
my_cursor.execute(sql)
print("sql語句執行成功")
# 關閉數據庫連接
db.close()
輸出結果為
sql語句執行成功
數據庫插入操作
插入數據使用 insert into 語句
import pymysql
# 連接數據庫
db = pymysql.connect(
host='localhost',
user='root',
passwd='your-passwd',
database='test',
)
# 使用sursor()方法創建一個游標對象my_cursor
my_cursor = db.cursor()
sql = 'insert into users(id, name, age, sex) values(1, "admin", 20, "M")'
try:
# 使用execute()方法執行sql語句
my_cursor.execute(sql)
# 數據表內容有更新,必須使用到該語句
db.commit()
print(my_cursor.rowcount, "條記錄已更新")
except:
# 如果發生錯誤則回滾
db.rollback()
# 關閉數據庫連接
db.close()
以上內容輸出結果為
1 條記錄已更新
數據庫查詢操作
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象
fetchall(): 接收全部的返回結果行.
rowcount: 這是一個只讀屬性,並返回執行execute()方法後影響的行數。
那麼我們查詢users表的全部記錄,由於我們剛剛只添加了一條記錄,所以查詢出來的結果只有一條數據
import pymysql
# 連接數據庫
db = pymysql.connect(
host='localhost',
user='root',
passwd='your-passwd',
database='test',
)
# 使用sursor()方法創建一個游標對象my_cursor
my_cursor = db.cursor()
sql = 'select * from users'
try:
# 使用execute()方法執行sql語句
my_cursor.execute(sql)
rs = my_cursor.fetchall()
for i in rs:
print(i)
except:
# 如果發生錯誤則回滾
db.rollback()
# 關閉數據庫連接
db.close()
以上腳本執行結果為
(1, 'admin', 20, 'M')
數據庫更新操作
修改數據表中的數據使用 update 語句
以下實例將users表的性別為M的年齡改為30
import pymysql
# 連接數據庫
db = pymysql.connect(
host='localhost',
user='root',
passwd='your-passwd',
database='test',
)
# 使用sursor()方法創建一個游標對象my_cursor
my_cursor = db.cursor()
sql = 'update users set age=30 where sex="M"'
try:
# 使用execute()方法執行sql語句
my_cursor.execute(sql)
# 數據表有更新,必須使用這條語句
db.commit()
except:
# 如果發生錯誤則回滾
db.rollback()
# 關閉數據庫連接
db.close()
刪除操作
刪除數據使用 delete from 語句
以下實例將年齡為30的用戶刪除
import pymysql
# 連接數據庫
db = pymysql.connect(
host='localhost',
user='root',
passwd='your-passwd',
database='test',
)
# 使用sursor()方法創建一個游標對象my_cursor
my_cursor = db.cursor()
sql = 'delete from users where age=30'
try:
# 使用execute()方法執行sql語句
my_cursor.execute(sql)
# 數據表有更新,必須使用這條語句
db.commit()
print("刪除成功")
except:
# 如果發生錯誤則回滾
db.rollback()
# 關閉數據庫連接
db.close()
以上腳本輸出結果為
刪除成功
commit()方法游標的所有更新操作,rollback()方法回滾當前游標的所有操作。每一個方法都開始了一個新的事務。