python連接SQL server用到的是pymssql模塊。
1.首先安裝(pip install pymssql)
2.創建連接對象
- 使用
connect
創建連接對象 connect.cursor
創建游標對象,SQL語句的執行基本都在游標上進行cursor.executeXXX
方法執行SQL語句,cursor.fetchXXX
獲取查詢結果等- 調用
close
方法關閉游標cursor
和數據庫連接
pymssql.connect(pymssql.connect(server='.',user='',password='',database='',timeout=0,login_timeout=60,charset ='UTF-8',as_dict=False,host='',appname=None,port ='1433',conn_properties,autocommit=False,tds_version='7.1' )
用於創建到數據庫的連接的構造函數。返回一個 Connection
對象。
connect的參數意義:
參數: |
|
---|
3.連接對象的屬性(connection對象)
-
Connection.
autocommit
(status) -
其中status是一個布爾值。此方法打開或關閉自動提交模式。
默認情況下,自動提交模式是關閉的,意味着如果更改的數據要保存在數據庫中,則每個事務都必須顯式提交。
你可以打開自動提交模式,這意味着每一個操作一旦成功就立即提交。
DB-API 2.0的pymssql擴展。
-
Connection.
close
() -
關閉連接。
-
Connection.
cursor
() -
返回一個游標對象,該對象可用於查詢並從數據庫中獲取結果。
-
Connection.
commit
() -
提交當前事務。如果將自動提交保留為缺省值,則必須調用此方法來保存數據
False
。4.Cusor對象方法(SQL 語句的調用)
-
Cursor.
close
() -
關閉游標。從這一點來看,光標不可用。
-
Cursor.
execute
(operation) -
Cursor.
execute
(operation,params) -
operation是一個字符串,如果指定params,它是一個簡單的值,一個元組,一個字典或
None
。對數據庫執行操作,可能會使用提供的值替換參數占位符。這應該是創建SQL命令的首選方法,而不是手動串聯字符串,這是潛在的SQL注入攻擊的原因。此方法接受與Python的內置字符串插值運算符類似的格式。但是,由於格式和類型轉換是在內部處理的,因此只支持
%s
和%d
占位符。兩個占位符在功能上都是等效的。如果您提供params字典,則支持鍵控占位符。
如果您
execute()
使用一個參數進行調用,該%
符號會失去其特殊含義,因此您可以像往常一樣在查詢字符串中使用它,例如在LIKE
運算符中。您必須先致電
Connection.commit()
,execute()
否則您的數據將不會保留在數據庫中。您也可以設置connection.autocommit
是否希望自動完成。DB-API需要此行為,如果您不喜歡它,請_mssql
改為使用 模塊。
-
Cursor.
executemany
(operation,params_seq ) -
operation是一個S語句QL字符串,params_seq是一系列數據元組。對參數序列中的每個元素重復執行數據庫操作。
例如:
-
Cursor.
fetchone
() -
返回查詢到一條語句,即一個元祖(行)。
-
Cursor.
fetchmany
(size = None ) -
返回查詢到size條語句
-
Cursor.
fetchall
() -
返回查詢到所有的元祖,為一個list
-
Cursor.
nextset
() -
此方法使光標跳到下一個可用結果集,丟棄當前集中的所有剩余行。
True
如果下一個結果可用,None
則返回值,如果沒有。
-
Cursor.
__iter__
() -
Cursor.
next
() -
這些方法有助於Python迭代器協議。你很可能不會直接調用它們,而是通過使用迭代器間接調用它們。
DB-API 2.0的pymssql擴展。
-
Cursor.
setinputsizes
() -
Cursor.
setoutputsize
() -
這些方法什么都不做,正如DB-API規范所允許的。
實例:
import pymssql #連接本地數據庫 con = pymssql.connect(host = 'localhost',user = '',password = '',database = 'DB_STU') #創建cursor對象 cur = con.cursor()
-