《python核心程式設計》讀書筆記-mysql-connector
阿新 • • 發佈:2019-01-13
DB-API
DB-API 是闡明一系列所需物件和資料庫訪問機制的標準,它可以為不同的資料庫介面卡和底層資料庫系統提供一致性的訪問
DB-API模組屬性 | 描述 |
---|---|
apilevel | 需要介面卡相容的 DB-API 版本 |
threadsafety | 本模組的執行緒安全級別 |
paramstyle | 本模組的 SQL 語句引數風格 |
connect() | Connect()函式 |
DB-API異 常類 | 描 述 |
---|---|
InterfaceError | 資料庫介面(非資料庫)錯誤 |
DatabaseError | 資料庫錯誤 |
DataError | 處理資料時出現問題 |
OperationlError | 資料庫操作執行期間出現錯誤 |
IntegrityError | 資料庫關係完整性錯誤 |
InternalError | 資料庫內部錯誤 |
ProgrammingError SQL | 命令執行失敗 |
NotSupportedError | 出現不支援的操作 |
Connection 物件
應用與資料庫之間進行通訊需要建立資料庫連線。它是最基本的機制,只有通過資料庫連線才能把命令傳遞到伺服器,並得到返回的結果。當一個連線(或一個連線池)建立後,可以建立一個遊標,向資料庫傳送請求,然後從資料庫中接收回應。
Connection 物件方法 | 描述 |
---|---|
close () | 關閉資料庫連線 |
commit() | 提交當前事務 |
rollback() | 取消當前事務 |
cursor() | 使用該連線建立(並返回)一個遊標或類遊標的物件 |
errorhandler (cxn, cur, errcls, errval ) | 作為給定連線的遊標的處理程式 |
Cursor 物件
當建立連線後,就可以和資料庫進行通訊了。遊標可以讓使用者提交資料庫命令,並獲得查詢的結果行。 Python DB-API 遊標物件總能提供遊標的功能, 即使是那些不支援遊標的資料庫。此時,如果你建立了一個數據庫介面卡,還必須要實現 cursor 物件,
以扮演類似遊標的角色。這樣,無論你將資料庫系統切換到支援遊標的資料庫還是不支援遊標的資料庫,都能保持 Python 程式碼的一致性。當遊標建立好後,就可以執行查詢或命令(或多個查詢和命令),並從結果集中取回一行或多行結果。
Cursor物件屬性 | 描 述 |
---|---|
arraysize | 使用 fetchmany()方法時,一次取出的結果行數,預設為 1 |
connection | 建立此遊標的連線(可選) |
description | 返回遊標活動狀態(7 項元組):(name, type_code, display_size, internal_ size,precision, scale, null_ok),只有 name 和 type_code 是必需的 |
lastrowid | 上次修改行的行 ID(可選;如果不支援行 ID,則返回 None) |
rowcount | 上次 execute*()方法處理或影響的行數 |
callproc( func [,args]) | 呼叫儲存過程 |
close() | 關閉遊標 |
execute (op[,args]) | 執行資料庫查詢或命令 |
executemany (op, args) | 類似 execute()和 map()的結合,為給定的所有引數準備並執行資料庫查詢或命令 |
fetchone() | 獲取查詢結果的下一行 |
fetchmany([size=cursor. arraysize]) | 獲取查詢結果的下面 size 行 |
fetchall() | 獲取查詢結果的所有(剩餘)行 |
__iter__() | 為遊標建立迭代器物件(可選,參考 next()) |
messages | 遊標執行後從資料庫中獲得的訊息列表(元組集合,可選) |
next () | 被迭代器用於獲取查詢結果的下一行(可選,類似 fetchone(),參考__iter__()) |
nextset() | 移動到下一個結果集合(如果支援) |
rownumber | 當前結果集中游標的索引(以行為單位,從 0 開始,可選) |
setinputsizes(sizes) | 設定允許的最大輸入大小(必須有,但是實現是可選的) |
setoutputsize(size[,col]) | 設定大列獲取的最大緩衝區大小(必須有,但是實現是可選的) |
mysql-connector
python3建議使用mysql-connector模組
示例
>>>import mysql.connector
>>>cnx = mysql.connector.connect(user='hal',password='9714mm',host='192.168.253.129',database='mydb')
>>>cursor = cnx.cursor()
>>>query = ("show tables")
>>>cursor.execute(query)
>>>for data in cursor.fetchall():
... print(data)
...
('Customers',)
('OrderItems',)
('Orders',)
('Products',)
('Productustomers',)
('Vendors',)
('t1',)
一般流程就是用cursor.execute()執行命令,用cursor.fetchall()獲取資料
參考文件: