PyMySQL安裝方法
pip install pymysql
連接數據庫
注意事項
在進行本文以下內容之前需要注意:
- 你有一個MySQL數據庫,并且已經啟動。
- 你有可以連接該數據庫的用戶名和密碼
- 你有一個有權限操作的database
基本使用
# 導入pymysql模塊
import pymysql
# 鏈接庫(database)
conn = pymysql.connect(
host="127.0.0.1", # host后面填寫需要鏈接的數據庫地址
user="root", # 用戶名
password="123456", # 密碼
database="human", # 數據庫名
charset="utf8" # 編碼方式
)
# 得到一個可以執行的SQL語句的光標
cursor = conn.cursor()
# 定義要執行的SQL語句
sql = 'select * from info;'
# 執行SQL語句
cursor.execute(sql)
# 關閉光標對象
cursor.close()
# 關閉數據庫連接
conn.close()
返回字典格式的數據
import pymysql
conn = pymysql.connect(
host="127.0.0.1",
user="root",
password="123456",
database="human",
charset="utf8"
)
# 得到一個可以執行SQL語句并且將結果作為字典返回的游標
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = 'select name from class;'
# 執行sql語句
cursor.execute(sql)
# 返回查詢到的所有數據
ret = cursor.fetchall()
# 返回查詢到的指定條數數據
# ret = cursor.fetchmany(5)
print(ret)
# 關閉鏈接
cursor.close()
conn.close()
注意
charset=“utf8”,編碼不要寫成"utf-8"
增刪改查操作
增
import pymysql
conn = pymysql.connect(
host="127.0.0.1",
user="root",
password="123456",
database="human",
charset="utf8"
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 注意此處傳值全部使用%s做占位符即可
sql = "insert into class(name, age, sex, salary) VALUES(%s,%s,%s,%s)"
name = 'abcd'
age = '33'
sex = '男'
salary = '120.02'
# 執行sql語句
cursor.execute(sql, [name, age, sex, salary])
# 提交事務
conn.commit()
cursor.close()
conn.close()
插入數據失敗回滾
import pymysql
conn = pymysql.connect(
host="127.0.0.1",
user="root",
password="123456",
database="human",
charset="utf8"
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = "INSERT into class(name, age, sex, salary) values(%s,%s,%s,%s);"
name = "ss"
age = "22"
sex = "男22"
salary="1234.2"
try:
cursor.execute(sql, [name, age, sex, salary])
# 提交事務
conn.commit()
except Exception:
print('出錯')
# 有異?;貪L事務
conn.rollback()
cursor.close()
conn.close()
獲取插入數據的ID(關聯操作時會用到)
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "run"
age = 18
try:
# 執行SQL語句
cursor.execute(sql, [username, age])
# 提交事務
conn.commit()
# 提交之后,獲取剛插入的數據的ID
last_id = cursor.lastrowid
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
批量執行
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
data = [("run1", 18), ("run2", 20), ("run3", 21)]
try:
# 批量執行多條插入SQL語句
cursor.executemany(sql, data)
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
刪
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "DELETE FROM USER1 WHERE id=%s;"
try:
cursor.execute(sql, [4])
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
改
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 修改數據的SQL語句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "run1"
age = 80
try:
# 執行SQL語句
cursor.execute(sql, [age, username])
# 提交事務
conn.commit()
except Exception as e:
# 有異常,回滾事務
conn.rollback()
cursor.close()
conn.close()
查
查詢單條數據
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 查詢數據的SQL語句
sql = "SELECT id,name,age from USER1 WHERE id=1;"
# 執行SQL語句
cursor.execute(sql)
# 獲取單條查詢數據
ret = cursor.fetchone()
cursor.close()
conn.close()
# 打印下查詢結果
print(ret)
查詢多條數據
# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(host=“你的數據庫地址”, user=“用戶名”,password=“密碼”,database=“數據庫名”,charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 查詢數據的SQL語句
sql = "SELECT id,name,age from USER1;"
# 執行SQL語句
cursor.execute(sql)
# 獲取多條查詢數據
ret = cursor.fetchall()
cursor.close()
conn.close()
# 打印下查詢結果
print(ret)
進階用法
# 可以獲取指定數量的數據
cursor.fetchmany(3)
# 光標按絕對位置移動1
cursor.scroll(1, mode="absolute")
# 光標按照相對位置(當前位置)向后移動1
cursor.scroll(1, mode="relative")
# 光標按照相對位置(當前位置)向前移動1
cursor.scroll(-1, mode="relative")
#計算機##mysql##數據庫##Python##科技新星創作營#