1. 程式人生 > >PyMySQL模塊的使用

PyMySQL模塊的使用

數據庫地址 cut 關閉數據庫 地址 mysql模塊 utf8 基本 exce fetch

PyMySQL介紹

  PyMySQL是在Python3.x版本中用於連接MySQL服務器的一個庫,Python2系列中則使用mysqldb。Django中也可以使用PyMySQL連接MySQL數據庫。

PyMySQL安裝

  在CMD終端中安裝:

pip install pymysql

也可以在PyCharm裏安裝。

連接數據庫

註意事項:

  • 有一個MySQL數據庫,並且已經啟動;
  • 擁有可以連接數據庫的用戶名和密碼;
  • 有一個有權限操作的database

基本使用:

# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect( host=“你的數據庫地址”,
port=端口號 user
=“用戶名”, password=“密碼”, database=“數據庫名”, charset=“utf8”) # 得到一個可以執行SQL語句的光標對象 cursor = conn.cursor() # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8;
""" # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫連接 conn.close()

返回字典格式數據:

# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(
    host=“你的數據庫地址”, 
   port=端口號 user
=“用戶名”, password=“密碼”, database=“數據庫名”, charset
=“utf8”) # 得到一個可以執行SQL語句並且將結果作為字典返回的遊標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫連接 conn.close()

註意事項:一定要註意連接 database 的時候,書寫格式,比如端口號是數字型的,密碼是字符串型的,charset="utf8" 不是“utf-8”。

增刪改查操作

# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(
    host=“你的數據庫地址”, 
    port=端口號
    user=“用戶名”,
    password=“密碼”,
    database=“數據庫名”,
    charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
# 執行SQL語句
cursor.execute(sql, [username, age])
# 提交事務
conn.commit()
cursor.close()
conn.close()

插入數據失敗回滾

# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(
    host=“你的數據庫地址”,
    port=端口號
    user=“用戶名”,
    password=“密碼”,
    database=“數據庫名”,
    charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
    # 執行SQL語句
    cursor.execute(sql, [username, age])
    # 提交事務
    conn.commit()
except Exception as e:
    # 有異常,回滾事務
    conn.rollback()
cursor.close()
conn.close()

獲取插入數據的ID(關聯操作時會用到)

# 導入pymysql模塊
import pymysql
# 連接database
conn = pymysql.connect(
    host=“你的數據庫地址”, 
    port=端口號
    user=“用戶名”,
    password=“密碼”,
    database=“數據庫名”,
    charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
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=“你的數據庫地址”, 
    port=端口號
    user=“用戶名”,
    password=“密碼”,
    database=“數據庫名”,
    charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
data = [("Alex", 18), ("Egon", 20), ("Yuan", 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=“你的數據庫地址”, 
    port=端口號
    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=“你的數據庫地址”, 
    port=端口號
    user=“用戶名”,
    password=“密碼”,
    database=“數據庫名”,
    charset=“utf8”)
# 得到一個可以執行SQL語句的光標對象
cursor = conn.cursor()
# 修改數據的SQL語句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "Alex"
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=“你的數據庫地址”, 
    port=端口號
    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=“你的數據庫地址”, 
    port=端口號
    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")

PyMySQL模塊的使用