91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python數據庫適配器(一)

發布時間:2020-10-09 08:57:49 來源:網絡 閱讀:1091 作者:FJCA 欄目:編程語言

python數據庫適配器(一)

如上圖是應用程序與關系型數據庫的多層通信,第一個框一般是C/C++程序,后兩個框是python程序。在python應用中,都是使用數據庫適配器去訪問數據庫的,不同數據庫有不同的適配器,但是都有一套標準,具體屬性如下:


python的DB-API模塊屬性                                                                                           

<apilevel>

該字符串(注意,不是浮點型)指明了模塊需要兼容的DB-API 最高版本,比如,1.0、2.0 等。該屬性的默認值是1.0。


<threadsafety>

這是一個整型值,可選值如下。
? 0:不支持線程安全。線程間不能共享模塊。
? 1:最小化線程安全支持:線程間可以共享模塊,但是不能共享連接。
? 2:適度的線程安全支持:線程間可以共享模塊和連接,但是不能共享游標。
? 3:完整的線程安全支持:線程間可以共享模塊、連接和游標。


<paramstyle參數風格>

參數風格     描 述                             示 例
numeric     數值位置風格                    WHERE name=:1
named       命名風格                        WHERE name=:name
pyformat    Python 字典printf()格式轉換     WHERE name=%(name)s
qmark       問號風格                        WHERE name=?
format      ANSIC 的printf()格式轉換WHERE   name=%s


<connect()函數屬性>

參 數             描 述
user            用戶名
password        密碼
host            主機名
database/db     數據庫名
dsn             數據源名
MySQLdb適配器不支持dsn,connect()函數調用參數的方法如:MySQLdb.connect(host='172.16.1.238',db='school',user='root',password='******')


<異常>

異 常                   描 述
Warning                 警告異常基類
Error                   錯誤異常基類
    InterfaceError          數據庫接口(非數據庫)錯誤
    DatabaseError           數據庫錯誤
    DataError               處理數據時出現問題
    OperationlError         數據庫操作執行期間出現錯誤
    IntegrityError          數據庫關系完整性錯誤
    InternalError           數據庫內部錯誤
    ProgrammingError SQL    命令執行失敗
    NotSupportedError       出現不支持的操作


python的DB-API模塊常見對象                                                                                                                                                                                                                                                 

使用MySQLdb模塊操作mysql數據庫的一個簡單例子:

#-*- coding:utf-8 -*-
#AUTH:FJC
import MySQLdb
from _mysql_exceptions import *
#連接數據庫,返回MySQLdb.connections.Connection對象
my_conn = MySQLdb.connect(host='172.16.1.238',db='school',user='root',password='123456')
#獲取游標,返回MySQLdb.cursors.Cursor對象
my_cur = my_conn.cursor()
try:
    #執行數據庫原生語句
    my_exec = my_cur.execute('select * from school.boys;')
    #返回查詢結果的前兩行
    print(my_cur.fetchmany(2))
    my_cur.execute('insert into school.boys values(4,"zhaoliu",20);')
    my_conn.commit()
except ProgrammingError:
    print("SQL語法錯誤!")
finally:
    my_conn.close()

與數據庫交互的過程可以簡單概括為(當然不止這些):

調用connect()方法返回一個Connect對象-->調用Connect對象的cursor()方法返回一個游標對象-->調用游標對象的execute*()和fetch*()方法等方法向數據庫發送請求-->調用Connect對象的commit()方法提交事務-->調用Connect對象的close()方法關閉數據庫連接

常用的對象如下:

Connect對象 <class 'MySQLdb.connections.Connection'>

Connect對象方法包括:
方 法 名                                     描 述
close ()                                    關閉數據庫連接
commit()                                    提交當前事務,如果數據庫不支持事務或開啟了自動提交,該方法將無法使用
rollback()                                  取消當前事務,同樣如果數據庫不支持事務,該方法將無法使用
cursor()                                    使用該連接創建(并返回)一個游標或類游標的對象
errorhandler (cxn, cur, errcls, errval )    作為給定連接的游標的處理程序


Cursor對象 <class 'MySQLdb.cursors.Cursor'>

Python DB-API 游標對象總能提供游標的功能,即使是那些不支持游標的數據庫。當游標創建好后,就可以執行查詢或命令(或多個查詢和命令),并從結果集中取回一行或多行結果。

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 行,例如:my_cur.fetchmany(2)返回查詢結果的前兩行
fetchall()                          獲取查詢結果的所有(剩余)行
__iter__()                          為游標創建迭代器對象(可選,參考next())
messages                            游標執行后從數據庫中獲得的消息列表(元組集合,可選)
next ()                             被迭代器用于獲取查詢結果的下一行(可選,類似fetchone(),參考__iter__())
nextset()                           移動到下一個結果集合(如果支持)
rownumber                           當前結果集中游標的索引(以行為單位,從0 開始,可選)
setinputsizes(sizes)                設置允許的最大輸入大小(必須有,但是實現是可選的)
setoutputsize(size[,col])           設置大列獲取的最大緩沖區大小(必須有,但是實現是可選的)


python字符串到數據庫特殊對象轉換常用的類型對象和構造函數:

類 型 對 象                                 描 述
Date (yr, mo, dy)                           日期值對象
Time (hr, min, sec)                         時間值對象
Timestamp (yr, mo, dy, hr, min, sec)        時間戳值對象
DateFromTicks (ticks)                       日期對象,給出從新紀元時間(1970 年1 月1 日00:00:00 UTC)以來的秒數
TimeFromTicks (ticks)                       時間對象,給出從新紀元時間(1970 年1 月1 日00:00:00 UTC)以來的秒數
TimestampFromTicks (ticks)                  時間戳對象,給出從新紀元時間(1970 年1 月1 日00:00:00 UTC)以來的秒數
Binary (string)                             對應二進制(長)字符串對象
STRING                                      表示基于字符串列的對象,比如VARCHAR
BINARY                                      表示(長)二進制列的對象,比如RAW、BLOB
NUMBER                                      表示數值列的對象
DATETIME                                    表示日期/時間列的對象
ROWID                                       表示“行ID”列的對象



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿合奇县| 邵东县| 彭山县| 临武县| 白银市| 南川市| 长武县| 巫溪县| 郑州市| 华容县| 彭泽县| 时尚| 平罗县| 绵竹市| 阜阳市| 长海县| 论坛| 黄山市| 昆明市| 佛教| 铁岭市| 江达县| 西畴县| 昌吉市| 交口县| 容城县| 西丰县| 奈曼旗| 威宁| 边坝县| 贺州市| 文山县| 云南省| 沂南县| 视频| 桃园市| 临桂县| 屏南县| 井陉县| 息烽县| 濮阳市|