python調用pymssql包操作SqlServer數據庫的實現
之前的文章介紹瞭python抓取網頁數據並將數據保存到本地excel文件,後續可以將數據保存到數據庫(SqlServer、mysql等)中,本文學習python中操作SqlServer數據庫的基本用法,後續將從網頁中抓取的數據保存到SqlServer數據庫。
百度python操作SqlServer數據庫,大部分搜索結果中使用pymssql操作SqlServer數據庫,本文即基於pymssql包學習SqlServer數據庫的基本操作方式,並使用之前文章中使用的環境檢測數據庫進行數據操作測試。
pymssql包可以通過離線和在線方式安裝。離線方式的話,請在參考文獻2中下載包文件並將其復制到python目錄下的Lib\site-packages文件夾中,在線安裝的話,在命令行中運行下列命令即可安裝。
pip install pymssql
從目前學習的內容看,pymssql主要通過執行sql語句操作數據庫,並通過cursor獲取查詢結果。本文主要學習以下基本操作:
- 數據庫的連接與關閉;
- 數據查詢;
- 數據插入。
數據庫的連接與關閉。pymssql通過調用pymssql.connect函數創建數據庫連接,並返回Connection對象。調用Connection對象的cursor函數獲取cursor對象,後續使用該對象執行sql語句並從數據庫中獲取數據。所有操作完成後調用Connection對象的close函數關閉鏈接。測試程序及運行結果如下所示。
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()
數據查詢。調用cursor對象的execute函數執行無參數或帶參數的查詢語句。如果是無參數的sql語句,直接向上面示例中的用法調用execute函數即可,如果有參數,則調用下圖中的第二個execute函數。有多種方式獲取查詢結果,cursor對象的fetchone函數獲取查詢結果中的下一行數據,fetchmany函數獲取指定數量的查詢結果,而fetchall獲取所有的查詢結果。除瞭調用函數,也可以通過迭代器或fetchone循環獲取所有查詢結果,從參考文獻3中找到瞭兩種使用示例,代碼片段如下:
#使用示例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: #獲取一條記錄中的某個屬性時,可以通過屬性名稱索引方式獲取 print("ID=%d, Name=%s" % (row['id'], row['name']))
參照上述示例編寫的查詢測試代碼,程序及執行結果如下所示。
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()
數據插入。調用cursor對象的execute執行insert語句可以插入單條數據,同時調用executemany函數則可以插入多條數據,參考文獻3中給出的多條數據插入示例如下。插入語句執行後,需要調用Connection對象的commit函數,否則就不會生效,也可以配置Connection對象的autocommit,讓語句自動提交生效。
基於參考文獻3及上圖中的示例,測試插入單條數據和多條數據,程序及執行結果如下所示。
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()
關於pymssql的詳細介紹可以查看參考文獻3。本文學習瞭基於pymssql的SqlServer數據庫基本操作方法後,後續會嘗試將之前保存到excel文件中的頁面抓取數據保存到SqlServer數據庫。
參考文獻
[1]https://blog.csdn.net/XUMENGCAS/article/details/123419220
[2]https://github.com/pymssql/pymssql
[3]https://pymssql.readthedocs.io/en/latest/index.html
到此這篇關於python調用pymssql包操作SqlServer數據庫的實現的文章就介紹到這瞭,更多相關python pymssql操作SqlServer內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 教你怎麼用python連接sql server
- python操作SqlServer獲取特定表的所有列名(推薦)
- python執行數據庫的查詢操作實例講解
- python 操作sqlite數據庫的方法
- Python全棧之學習MySQL(3)