国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python連接Mssql基礎教程之Python庫pymssql

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

2021-04-02 00:29張子浩 Python

這篇文章主要給大家介紹了關于Python連接Mssql基礎教程之Python庫pymssql的相關資料,文中分別介紹了連接數據庫、游標使用注意事項、游標返回行為字典變量、使用with語句(上下文管理器)以及調用存儲過程等的實現,需要的朋友可

前言

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和數據庫連接
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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 persons
CREATE 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',若參數值是字符串,在執行語句時會自動添加單引號

游標使用注意事項

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

?
1
2
3
4
5
6
7
8
9
10
11
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方法獲取到游標查詢結果之后再執行下一個查詢, 如下:
?
1
2
3
4
5
c1.execute('SELECT ...')
c1_list = c1.fetchall()
 
c2.execute('SELECT ...')
c2_list = c2.fetchall()

游標返回行為字典變量

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

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

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

?
1
2
3
4
5
6
7
8
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方法關閉連接和游標

?
1
2
3
4
5
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方法來調用存儲過程

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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']))

總結

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

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

原文鏈接:http://www.cnblogs.com/ZaraNet/p/9596043.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 91精品视频一区 | 黄色大片一级 | 168黄网 | 久久国产精品视频 | 亚洲视频在线免费观看 | 看黄免费| 国产高清一区二区 | 内地农村三片在线观看 | 日韩资源| 三级视频在线 | 午夜精品网站 | 亚洲一区综合 | 99精品一区二区三区 | 精品美女久久久 | www.夜夜骑| 国产免费久久 | 自拍偷拍亚洲一区 | 久久久青草婷婷精品综合日韩 | 国内精品一区二区 | 成人片网址 | 免费观看a视频 | 人人九九精| 欧美在线观看免费观看视频 | 亚洲精品一区二区三区在线 | 成人在线观看免费 | av大片| 亚洲天堂2020 | 成人片免费看 | 国产日韩一区二区三区 | 搡女人真爽免费午夜网站 | 三级av在线 | 欧美一区二区二区 | 日韩精品毛片免费看 | 国产精品乱码久久 | 一级欧美日韩 | 国产精品伊人影院 | 久久久久久国产精品 | 中文字幕日韩欧美 | 国产欧美日韩综合精品一区二区 | 亚洲精品日本 | 激情视频网 |