溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2022-06-13 09:15:31 來(lái)源:億速云 閱讀:404 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容介紹了“python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

pymssql包可以通過(guò)離線和在線方式安裝。離線方式的話,請(qǐng)?jiān)趨⒖嘉墨I(xiàn)2中下載包文件并將其復(fù)制到python目錄下的Lib\site-packages文件夾中,在線安裝的話,在命令行中運(yùn)行下列命令即可安裝。

pip install pymssql

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

從目前學(xué)習(xí)的內(nèi)容看,pymssql主要通過(guò)執(zhí)行sql語(yǔ)句操作數(shù)據(jù)庫(kù),并通過(guò)cursor獲取查詢結(jié)果。本文主要學(xué)習(xí)以下基本操作:

  • 數(shù)據(jù)庫(kù)的連接與關(guān)閉;

  • 數(shù)據(jù)查詢;

  • 數(shù)據(jù)插入。

數(shù)據(jù)庫(kù)的連接與關(guān)閉。pymssql通過(guò)調(diào)用pymssql.connect函數(shù)創(chuàng)建數(shù)據(jù)庫(kù)連接,并返回Connection對(duì)象。調(diào)用Connection對(duì)象的cursor函數(shù)獲取cursor對(duì)象,后續(xù)使用該對(duì)象執(zhí)行sql語(yǔ)句并從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)。所有操作完成后調(diào)用Connection對(duì)象的close函數(shù)關(guān)閉鏈接。測(cè)試程序及運(yùn)行結(jié)果如下所示。

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

import pymssql

server = 'XXX.XXX.XXX.XXX'
user = 'XXXXXXX'
password = 'XXXXXXXXXX'
db='EC'

conn = pymssql.connect(server, user, password, db)

cursor = conn.cursor()
cursor.execute('SELECT Count(*) FROM EnvironmentRecord')
print('total data amount = %d' % cursor.fetchone())

conn.close()

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

數(shù)據(jù)查詢。調(diào)用cursor對(duì)象的execute函數(shù)執(zhí)行無(wú)參數(shù)或帶參數(shù)的查詢語(yǔ)句。如果是無(wú)參數(shù)的sql語(yǔ)句,直接向上面示例中的用法調(diào)用execute函數(shù)即可,如果有參數(shù),則調(diào)用下圖中的第二個(gè)execute函數(shù)。有多種方式獲取查詢結(jié)果,cursor對(duì)象的fetchone函數(shù)獲取查詢結(jié)果中的下一行數(shù)據(jù),fetchmany函數(shù)獲取指定數(shù)量的查詢結(jié)果,而fetchall獲取所有的查詢結(jié)果。除了調(diào)用函數(shù),也可以通過(guò)迭代器或fetchone循環(huán)獲取所有查詢結(jié)果,從參考文獻(xiàn)3中找到了兩種使用示例,代碼片段如下:

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

#使用示例1
cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
row = cursor.fetchone()
while row:
    print("ID=%d, Name=%s" % (row[0], row[1]))
    row = cursor.fetchone()
    
#使用示例2
cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
for row in cursor:
	#獲取一條記錄中的某個(gè)屬性時(shí),可以通過(guò)屬性名稱索引方式獲取
    print("ID=%d, Name=%s" % (row['id'], row['name']))

參照上述示例編寫的查詢測(cè)試代碼,程序及執(zhí)行結(jié)果如下所示。

import pymssql

server = 'XXX.XXX.XXX.XXX'
user = 'XXXXXXX'
password = 'XXXXXXXXXX'
db='EC'

conn = pymssql.connect(server, user, password, db)

cursor = conn.cursor()
cursor.execute('SELECT * FROM EnvironmentRecord WHERE CreateTime>=%s', '2021-6-19 16:12:00')

for row in cursor:
    print('row = %r' % (row,))

conn.close()

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

數(shù)據(jù)插入。調(diào)用cursor對(duì)象的execute執(zhí)行insert語(yǔ)句可以插入單條數(shù)據(jù),同時(shí)調(diào)用executemany函數(shù)則可以插入多條數(shù)據(jù),參考文獻(xiàn)3中給出的多條數(shù)據(jù)插入示例如下。插入語(yǔ)句執(zhí)行后,需要調(diào)用Connection對(duì)象的commit函數(shù),否則就不會(huì)生效,也可以配置Connection對(duì)象的autocommit,讓語(yǔ)句自動(dòng)提交生效。

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

基于參考文獻(xiàn)3及上圖中的示例,測(cè)試插入單條數(shù)據(jù)和多條數(shù)據(jù),程序及執(zhí)行結(jié)果如下所示。

import pymssql

server = 'XXX.XXX.XXX.XXX'
user = 'XXXXXXX'
password = 'XXXXXXXXXX'
db='EC'

conn = pymssql.connect(server, user, password, db)

cursor = conn.cursor()

##sqlStr="INSERT INTO EnvironmentRecord(CreateTime,DHTState,Humidity,Temperature,FlameValue,MQValue)VALUES('2022-05-23 10:00:00',1,54, 22, 962, 202)"
##cursor.execute(sqlStr)

cursor.executemany(
    "INSERT INTO EnvironmentRecord(CreateTime,DHTState,Humidity,Temperature,FlameValue,MQValue)VALUES(%s,%d,%d,%d,%d,%d)",
    [('2022-05-24 10:00:00',1,54, 22, 962, 202),
     ('2022-05-24 10:10:00',1,54, 22, 962, 202),
     ('2022-05-24 10:20:00',1,54, 22, 962, 202)])
conn.commit()

conn.close()

python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)

“python如何調(diào)用pymssql包操作SqlServer數(shù)據(jù)庫(kù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI