一:兩個對象 connection 與 cursor
調用connect()方法創建 connection對象:
connection = pymysql.connect(args)
connection對象方法與屬性介紹:
close() Send the quit message and close the socket.
commit() Commit changes to stable storage.
cursor(cursor=None) Create a new cursor to execute queries with.
open Return True if the connection is open
begin() Begin transaction;
ping(reconnect=True) Check if the server is alive.
rollback() Roll back the current transaction.
select_db(db) Set current db.
show_warnings() Send the “SHOW WARNINGS” SQL command
cursor對象是用來與數據庫進行交互的;通過connection對象調用cursor()方法創建cursor對象
cursor = connection.cursor()
# cursor = connection.cursor(cursor = pymysql.cursors.DictCursor)
cursor對象方法與屬性介紹:
close() Closing a cursor just exhausts all remaining data.
execute(query, args=None) Execute a query ;Return: Number of affected rows (a int number)
# If args is a list or tuple, %s can be used as a placeholder in the query.
# If args is a dict, %(name)s can be used as a placeholder in the query.
executemany(query, args) Run several data against one query
fetchall() Fetch all the rows
fetchmany(size=None) Fetch several rows
fetchone() Fetch the next row
二:代碼與筆記
import pymysql #導入pymysql模塊
connection = pymysql.connect(host='127.0.0.1',
user='user',
password='pwd',
database='db', # 也有用 db='db' ,是數據庫的別名,爲了兼容MySQLdb
charset='utf8', # 可選
cursorclass=pymysql.cursors.DictCursor, # 可選,這種cursor會以字典的形式返回查詢結果
autocommit=True) # 可選 設置爲自動提交;默認autocommit=False
cursor = connection.cursor() # 產生cursor對象,該對象用來與數據庫進行交互
sql = 'insert into t1(name,password) values(%s,%s);'
cursor.execute(sql,('rock','123'))
# connection.commit() 若無設置autocommit=True,則需要在這提交以保存你的修改
sql1 = 'select * from t1;'
rows = cursor.execute(sql1) # 執行一條查詢,返回受影響的行數,而不是查詢結果
res = cursor.fetchall() # 取出所有的查詢結果
cursor.close() # 需先關閉cursor
connection.close() # 最後要關閉connection
# with connection.cursor() as cursor: # 採用這種方式最後會自動關閉cursor,所以無需再用cursor.close()
# sql = 'select * from t1;'
# rows = cursor.execute(sql)
# res = cursor.fetchall()
# 選用pymysql.cursors.DictCursor 以字典的形式返回查詢結果
# 如 {'name': '程咬鐵', 'sex': 'female'} 形式爲 {列名:列值,列名:列值}
# 注意:查詢結果中的每條記錄只能被取一次,所有記錄取完了再取就會取空(None 或 空列表)
# fetchone() 從查詢結果中取出下一條記錄
# fetchmany(size=None) 從查詢結果中取出幾條記錄,放入一個列表中;不設置size,默認取出下一條記錄
# fetchall() 從查詢結果中取出所有記錄,放入一個列表中