国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python連接Mssql基礎教程之Python庫pymssql

2020-01-04 14:31:59
字體:
來源:轉載
供稿:網友

前言

pymssql模塊是用于sql server數據庫(一種數據庫通用接口標準)的連接。另外pyodbc不僅限于SQL server,還包括Oracle,MySQL,Access,Excel等。

另外除了pymssql,pyodbc還有其他幾種連接SQL server的模塊,感興趣的可以在這里找到:https://wiki.python.org/moin/SQL%20Server

本文將詳細介紹關于Python連接Mssql之Python庫pymssql的相關內容,下面話不多說了,來一起看看詳細的介紹吧

連接數據庫

pymssql連接數據庫的方式和使用sqlite的方式基本相同:

  • 使用connect創建連接對象
  • connect.cursor創建游標對象,SQL語句的執行基本都在游標上進行
  • cursor.executeXXX方法執行SQL語句,cursor.fetchXXX獲取查詢結果等
  • 調用close方法關閉游標cursor和數據庫連接
import pymssql# server  數據庫服務器名稱或IP# user   用戶名# password 密碼# database 數據庫名稱conn = pymssql.connect(server, user, password, database)cursor = conn.cursor()# 新建、插入操作cursor.execute("""IF OBJECT_ID('persons', 'U') IS NOT NULL  DROP TABLE personsCREATE TABLE persons (  id INT NOT NULL,  name VARCHAR(100),  salesrep VARCHAR(100),  PRIMARY KEY(id))""")cursor.executemany(  "INSERT INTO persons VALUES (%d, %s, %s)",  [(1, 'John Smith', 'John Doe'),   (2, 'Jane Doe', 'Joe Dog'),   (3, 'Mike T.', 'Sarah H.')])# 如果沒有指定autocommit屬性為True的話就需要調用commit()方法conn.commit()# 查詢操作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()# 也可以使用for循環來迭代查詢結果# for row in cursor:#   print("ID=%d, Name=%s" % (row[0], row[1]))# 關閉連接conn.close()

注意: 例子中查詢操作的參數使用的%s而不是'%s',若參數值是字符串,在執行語句時會自動添加單引號

游標使用注意事項

一個連接一次只能有一個游標的查詢處于活躍狀態,如下:

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游標查詢出來的結果print( "John Doe" )print( c2.fetchall() ) # 不會有任何結果

為了避免上述的問題可以使用以下兩種方式:

  • 創建多個連接來保證多個查詢可以并行執行在不同連接的游標上
  • 使用fetchall方法獲取到游標查詢結果之后再執行下一個查詢, 如下:
c1.execute('SELECT ...')c1_list = c1.fetchall()c2.execute('SELECT ...')c2_list = c2.fetchall()

游標返回行為字典變量

上述例子中游標獲取的查詢結果的每一行為元組類型,

可以通過在創建游標時指定as_dict參數來使游標返回字典變量,

字典中的鍵為數據表的列名

conn = pymssql.connect(server, user, password, database)cursor = conn.cursor(as_dict=True)cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')for row in cursor: print("ID=%d, Name=%s" % (row['id'], row['name']))conn.close()

使用with語句(上下文管理器)

可以通過使用with語句來省去顯示的調用close方法關閉連接和游標

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']))

調用存儲過程

pymssql 2.0.0以上的版本可以通過cursor.callproc方法來調用存儲過程

with pymssql.connect(server, user, password, database) as conn: with conn.cursor(as_dict=True) as cursor:  # 創建存儲過程  cursor.execute("""  CREATE PROCEDURE FindPerson   @name VARCHAR(100)  AS BEGIN   SELECT * FROM persons WHERE name = @name  END  """)  # 調用存儲過程  cursor.callproc('FindPerson', ('Jane Doe',))  for row in cursor:   print("ID=%d, Name=%s" % (row['id'], row['name']))

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。

參考:http://pymssql.org/en/stable/pymssql_examples.html


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 田东县| 台江县| 桦南县| 吉隆县| 周口市| 云安县| 棋牌| 宽甸| 灵宝市| 化德县| 久治县| 三江| 洛隆县| 琼海市| 安塞县| 合山市| 柳林县| 攀枝花市| 鹤壁市| 通化县| 黑水县| 陇南市| 绩溪县| 周口市| 无锡市| 盘山县| 和平区| 呼和浩特市| 库伦旗| 满洲里市| 运城市| 唐海县| 色达县| 湖北省| 四平市| 兴安盟| 阿克苏市| 宁晋县| 武义县| 方正县| 海宁市|