使用 pymssql 連線到 MSSQL
最近同事申請 MSSQL 資料庫權限,說要用 Python 連接,但他們都用 pymssql 套件,後來跟我說連不上時,我就請他改用 SQLAlchemy 測試,也提供的連線的語句,之後撥空做了這個測試是可以連線的,可能當時連線字串有問題或防火牆還沒通吧!接下來就來看看怎麼用 pymssql 連接到 MSSQL吧。
作業環境
- Windows 7
- Anaconda3
- Python 3.7.4
- MSSQL 2008 R2
安裝 pymssql
筆者本機已安裝了 Anaconda3 ,所以開啟命令提示字元 (cmd) ,先進入之前建立好的虛擬環境,命令如下:
> conda activate dsalearning
如果你還不知道怎麼建立虛擬環境,可以上網查一下嘍,筆者有空時會再補上如何建立虛擬環境。
這時檢查一下是否已安裝 pymssql 套件,檢查命令如下:
> pip list
筆者的結果如下:
(dsalearning) C:\Users\alvinlin>pip list
Package Version
------------ -------------------
certifi 2020.4.5.1
pip 20.0.2
setuptools 46.1.3.post20200330
wheel 0.34.2
wincertstore 0.2
還沒有安裝,輸入下列命令來安裝 pymssql 套件吧。
> pip install pymssql
安裝的速度很快,回傳結果如下:
(dsalearning) C:\Users\alvinlin>pip install pymssql
Collecting pymssql
Using cached pymssql-2.1.4-cp37-cp37m-win_amd64.whl (411 kB)
Installing collected packages: pymssql
Successfully installed pymssql-2.1.4
這時你可以再用檢查套件的命令再查看一下。
連線 MSSQL
使用 pymssql 套件的 connect()
函式來連接到 MSSQL Database,並傳入 server
、 user
、 password
及 database
等四個參數,連接的命令如下。
import pymssql
conn = pymssql.connect(
server='yourserver'
, user='yourusername'
, password='yourpassword'
, database='yourdatabase'
)
請自行替換這四個參數值, server
參數可以是 Host Name 、Domain Name 與 IP 這三者其一,也可以改用 host
參數。
執行查詢
使用 conn.cursor()
函式取得 cursor
物件 , cursor.execute()
函式可用來擷取對 SQL Database 查詢的結果集,cursor.fetchone()
反覆查詢結果集。
import pymssql
conn = pymssql.connect(
server='yourserver'
, user='yourusername'
, password='yourpassword'
, database='yourdatabase'
)
cursor = conn.cursor()
sql="select top 10 * from [dbo].[tblA]"
cursor.execute(sql)
row = cursor.fetchone()
while row:
print(str(row[0])+" "+str(row[1])+" "+str(row[2]))
row = cursor.fetchone()
conn.close()
回傳的結果如下圖
留言