Python 常用第三方庫 pymysql
阿新 • • 發佈:2022-05-05
pymysql 概述
-
Python 的資料庫介面標準是 Python DB-API
-
PyMySQL 是從 Python 連線到 MySQL 資料庫伺服器的介面
-
PyMySQL 的目標是成為 MySQLdb 的替代品
-
官方文件:http://pymysql.readthedocs.io/
pymysql 安裝
-
使用 pip 安裝
pip install pymysql
-
使用 Pycharm 介面安裝
pymysql 連線資料庫
- host:MySQL 伺服器地址
- user:使用者名稱
- password:密碼
- database:資料庫名稱
- charset:編碼方式,推薦使用 utf8mb4
# 1.匯入庫
import pymysql
# 2.建立連線
conn = pymysql.connect(host='伺服器地址',
user='使用者名稱',
password='密碼',
database='資料庫名',
charset="utf8mb4")
# 3.關閉連線
conn.close()
pymysql 連線資料庫
- 封裝獲取連線的函式
import pymysql # 1.封裝建立連線的物件 def get_conn(): conn = pymysql.connect( host="伺服器地址", user="root", password="123456", database="資料庫名", charset="utf8mb4" ) return conn
pymysql 入門例項
- 獲取連線物件
- 開啟
- 關閉
- 獲取遊標物件
- 執行 SQL
- 查詢記錄
from . import get_conn def test_demo(): # 1.獲取連線物件 conn = get_conn() # 2.獲取遊標物件 cursor = conn.cursor() # 3.執行SQL cursor.execute("SELECT VERSION()") # 4.查詢結果 version = cursor.fetchone() print(f"資料庫的版本是:{version}") # 5.關閉連線 conn.close()
pymysql 建立表
- 建立表
testcase
from . import get_conn
def test_create():
conn = get_conn() # 獲取連線
cursor = conn.cursor() # 獲取遊標
sql = """
CREATE TABLE `testcase` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_bin NOT NULL,
`expect` varchar(255) COLLATE utf8_bin NOT NULL,
`owner` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
"""
cursor.execute(sql) # 執行SQL
conn.close() # 關閉連線
pymysql 插入操作
- 插入記錄
from . import get_conn
def test_insert():
conn = get_conn() # 獲取連線
cursor = conn.cursor() # 獲取遊標
sql = """INSERT INTO testcase
(id, title, expect, owner)
values (1, 'S11總決賽', '冠軍', 'EDG');
"""
cursor.execute(sql) # 執行SQL
conn.commit() # 提交
執行事務
- 提交操作:
commit()
- 回滾操作:
rollback()
try-catch-finally
from . import get_conn
def test_insert():
conn = get_conn() # 獲取連線
cursor = conn.cursor() # 獲取遊標
sql = """INSERT INTO testcase
(id, title, expect, owner)
values (2, 'S11全球總決賽', '冠軍', 'EDG');
"""
try:
cursor.execute(sql) # 執行SQL
conn.commit() # 提交事務
except:
conn.rollback() # 回滾事務
finally:
conn.close() # 關閉連線
pymysql 查詢操作
- 查詢操作
-
fetchone()
:獲取單條記錄 -
fetchmany(n)
:獲取 n 條記錄 -
fetchall()
:獲取所有結果記錄
-
import sys
from . import get_conn
def test_retrieve():
conn = get_conn() # 獲取連線
cursor = conn.cursor() # 獲取遊標
sql = "SELECT * FROM testcase;"
# 捕獲異常
try:
cursor.execute(sql) # 執行SQL
record = cursor.fetchone() # 查詢記錄
print(record)
except Exception as e:
print(sys.exc_info()) # 列印錯誤資訊
finally:
conn.close() # 關閉連線
pymysql 更新操作
- 更新資料表的資料
from . import get_conn
def test_update():
conn = get_conn()
cursor = conn.cursor()
sql = "UPDATE testcase SET owner='hogwarts' WHERE id=2;"
try:
cursor.execute(sql) # 執行SQL
conn.commit() # 提交事務
except:
conn.rollback() # 回滾事務
finally:
conn.close() # 關閉連線
pymysql 刪除操作
- 刪除資料表的資料
from . import get_conn
def test_delete():
conn = get_conn() # 獲取連線
cursor = conn.cursor() # 獲取遊標
sql = "DELETE FROM testcase WHERE id=3;"
try:
cursor.execute(sql) # 執行SQL
conn.commit() # 提交事務
except:
conn.rollback() # 回滾事務
finally:
conn.close() # 關閉連線