用python連接SQL server數據庫


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的參數意義:

參數:
  • server(str) - 數據庫主機
  • user(str) - 數據庫用戶連接為
  • password(str) - 用戶密碼
  • database(str) - 最初連接到的數據庫
  • timeout(int) - 以秒為單位的查詢超時,默認為0(無超時)
  • login_timeout(int) - 以秒為單位的連接和登錄超時,默認為60
  • charset(str) - 用來連接數據庫的字符集
  • conn_properties - 連接建立時發送到服務器的SQL查詢。可以是字符串或其他類型的字符串迭代。默認值:請參閱_mssql.connect()
  • as_dict(布爾) - 行是否應該作為字典而不是元組返回
  • appname(str) - 設置用於連接的應用程序名稱
  • port(str) - 用於連接服務器的TCP端口
  • autocommit(布爾) - 是否使用默認的自動提交模式
  • tds_version(str) - 要使用的TDS協議版本。

3.連接對象的屬性(connection對象)

  

  Connection.autocommitstatus

其中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.executemanyoperationparams_seq 

operation是一個S語句QL字符串,params_seq是一系列數據元組。對參數序列中的每個元素重復執行數據庫操作。

例如:

 

Cursor.fetchone

返回查詢到一條語句,即一個元祖(行)。

Cursor.fetchmanysize = 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()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM