Python--如何在python中操作數據庫-mysql


PyMysql 是一個 純PythonMysql客戶端庫,大多數的公共API都兼容mysqlclientmysqldb.

# 1. 連接
conn = pymysql.connect(
    user = 'root',  # 用戶名
    password = '111111',  # 用戶密碼
    db = 'aaa',   # 連接的數據庫
    charset = 'gbk',   # 設置字符編碼
    cursorclass=pymysql.cursors.DictCursor    # 設置游標類型,已返回不同類型數據
)
# 👆  只是完成了連接

# 2. 創建游標
cursor = conn.cursor()
# 👆 相當用創建了數據庫操縱對象,獲取數據的工具

# 3. 執行sql語句
cursor.execute('select * from student')  # 返回了3條數據

# 4. 獲取數據
result = cursor.fetchall()
print(result)  
# 默認返回嵌套的元組,元組里的每一個元組是一行數據,未設置cursorclass的情況下
# 如果設置cursorclass=pl.cursors.DictCursor,返回的是一個字典列表,每個字典就是一行數據

# 5. 執行完畢之后關閉游標 
cursor.close()

# 6. 關閉連接
conn.close()

第二種方式 :

# 1. 連接
conn = pymysql.connect(
    user = 'root',  # 用戶名
    password = '111111',  # 用戶密碼
    db = 'aaa',   # 連接的數據庫
    charset = 'gbk',   # 設置字符編碼
    cursorclass=pymysql.cursors.DictCursor    # 設置游標類型,已返回不同類型數據
)

with conn.cursor() as cursor:
    sql = 'select * from student where stuAge >%s and stuAge<%s'
    cursor.execute(sql,(1,22))  # 拼接參數傳給execute 方法 ,避免sql注入
    res = cursor.fetchone()  # 獲取查詢到的第1條數據
    res2 = cursor.fetchmany(2)   # 獲取已取數據的后面3條數據
    res_all = cursor.fetchall()   # 獲取查詢剩下的所有數據
    
    print(res_all)
conn.close()

相比較為省略emmm 簡單的一些是這樣的..

conn = pymysql.connect(
    user = 'root',  # 用戶名
    password = '111111',  # 用戶密碼
    db = 'aaa',   # 連接的數據庫
    charset = 'gbk',   # 設置字符編碼
    cursorclass=pymysql.cursors.DictCursor    # 設置游標類型,已返回不同類型數據
)
with conn as cursor:
    sql = 'select * from student where stuAge >%s and stuAge<%s'
    cursor.execute(sql,(1,22))  
    #數據的獲取
    print(cursor.fetchmany(3))   # fetch one   返回一條數據  fetchmany  自定義N條數據  fetchall  所以數據
conn.close()

使用PyMysql 進行 , , 操作:

import pymysql.cursors
# 配置數據庫連接信息
db ={
    'user':'root',
    'password':'111111',
    'db':'aaa',
    'charset':'gbk',
}
# 連接數據庫
conn = pymysql.connect(**db)
# pymysql 增 , 刪 改 默認啟動事務
try:
    with conn.cursor() as cursor:
        # 構造sql 語句
        sql1 = 'insert into grade(gid , gName) values(77 , "軟件三班")'
        sql2 = 'insert into grade(gid , gName) values(78 , "軟件三班")'
        # 執行sql 語句
        cursor.execute(sql1)
        cursor.execute(sql2)
        # 提交事務
        conn.commit()
except Exception as e:
    print(e)
    conn.rollback()
finally:
    conn.close()

 

# 數據庫  修改 :
import random
try:
    with conn as cursor:
        sql = 'select stuId from student'
        cursor.execute(sql)
        ids = cursor.fetchall()
        print(ids)
        sqls = 'update student set stuAge = %s where stuId = %s'
        for item in ids:
            cursor.execute(sqls,(random.randint(10,36),item['id']))  # ids返回的是字典key:value 所以取值用item['id']
        conn.commit()
except Exception as e:
    print(e)
    conn.rollback()
finally:
 conn.close()

注意 :

1. pymysql 中執行的 sq| 語句不需要加;
2. execute 執行完查詢后不直接返回結果,需要主動調用方法獲取
3.要釋放資源,關閉游示與連接 # cursor , conn
4.事務的回滾與提交  # rollback  , commit


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM