Python连接SQL Server数据库 - pymssql使用基础
生活随笔
收集整理的這篇文章主要介紹了
Python连接SQL Server数据库 - pymssql使用基础
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
連接數(shù)據(jù)庫(kù)
pymssql連接數(shù)據(jù)庫(kù)的方式和使用sqlite的方式基本相同:
- 使用connect創(chuàng)建連接對(duì)象
- connect.cursor創(chuàng)建游標(biāo)對(duì)象,SQL語(yǔ)句的執(zhí)行基本都在游標(biāo)上進(jìn)行
- cursor.executeXXX方法執(zhí)行SQL語(yǔ)句,cursor.fetchXXX獲取查詢結(jié)果等
- 調(diào)用close方法關(guān)閉游標(biāo)cursor和數(shù)據(jù)庫(kù)連接
注意: 例子中查詢操作的參數(shù)使用的%s而不是'%s',若參數(shù)值是字符串,在執(zhí)行語(yǔ)句時(shí)會(huì)自動(dòng)添加單引號(hào)
游標(biāo)使用注意事項(xiàng)
一個(gè)連接一次只能有一個(gè)游標(biāo)的查詢處于活躍狀態(tài),如下:
c1 = conn.cursor() c1.execute('SELECT * FROM persons')c2 = conn.cursor() c2.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')print( "all persons" ) print( c1.fetchall() ) # 顯示出的是c2游標(biāo)查詢出來的結(jié)果print( "John Doe" ) print( c2.fetchall() ) # 不會(huì)有任何結(jié)果為了避免上述的問題可以使用以下兩種方式:
- 創(chuàng)建多個(gè)連接來保證多個(gè)查詢可以并行執(zhí)行在不同連接的游標(biāo)上
- 使用fetchall方法獲取到游標(biāo)查詢結(jié)果之后再執(zhí)行下一個(gè)查詢, 如下:
游標(biāo)返回行為字典變量
上述例子中游標(biāo)獲取的查詢結(jié)果的每一行為元組類型,
可以通過在創(chuàng)建游標(biāo)時(shí)指定as_dict參數(shù)來使游標(biāo)返回字典變量,
字典中的鍵為數(shù)據(jù)表的列名
使用with語(yǔ)句(上下文管理器)
可以通過使用with語(yǔ)句來省去顯示的調(diào)用close方法關(guān)閉連接和游標(biāo)
with pymssql.connect(server, user, password, database) as conn:with conn.cursor(as_dict=True) as cursor:cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')for row in cursor:print("ID=%d, Name=%s" % (row['id'], row['name']))調(diào)用存儲(chǔ)過程
pymssql 2.0.0以上的版本可以通過cursor.callproc方法來調(diào)用存儲(chǔ)過程
with pymssql.connect(server, user, password, database) as conn:with conn.cursor(as_dict=True) as cursor:# 創(chuàng)建存儲(chǔ)過程cursor.execute("""CREATE PROCEDURE FindPerson@name VARCHAR(100)AS BEGINSELECT * FROM persons WHERE name = @nameEND""")# 調(diào)用存儲(chǔ)過程cursor.callproc('FindPerson', ('Jane Doe',))for row in cursor:print("ID=%d, Name=%s" % (row['id'], row['name']))參考連接: http://pymssql.org/en/stable/pymssql_examples.html
轉(zhuǎn)載于:https://www.cnblogs.com/baiyangcao/p/pymssql_basic.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Python连接SQL Server数据库 - pymssql使用基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三者险的赔偿内容有哪些
- 下一篇: 慧荣3267ae工厂模式怎么使用 使用慧