import pyodbc
pyodbc
模組是用於odbc資料庫(一種資料庫通用介面標準)的連線,不僅限於sql server,還包括oracle,mysql,access,excel等。
另外除了pyodbc
還有其他幾種連線sql server的模組,感興趣的可以在這裡找到:
傳遞odbc
標準的連線字串給connect
方法即可:
對於sql server寫法如下:
conn = pyodbc.connect(r'driver=;server=test;database=test;uid=user;pwd=password')
注意:官方文件中使用了port引數,而官方wiki中連線sql server是沒有port引數的。實際連線中發現加了port引數連不上(08001錯誤),port要寫在server引數中,逗號分割,如:
conn = pyodbc.connect(r'driver=;server=192.168.1.1,3433;database=test;uid=user;pwd=password')
注意:不同的sql server版本對應的driver欄位不同。對應關係如下:
使用pyodbc連線其他支援odbc的資料庫方式可參考pyodbc官方wiki。
連線之後需要先建立cursor:
cursor =conn.cursor()
使用execute
方法執行sql語句:
cursor.execute("select user_id, user_name from users")
execute
返回的仍然是cursor
。
使用fetchone()
方法依次獲取結果中需要的內容:
row = cursor.fetchone()
if row:
print(row)
print('name:', row[1]) # access by column index
print('name:', row.user_name) # or access by name
使用fetchall()
直接獲取所有execute結果作為乙個list:
cursor.execute("select user_id, user_name from users")
rows = cursor.fetchall()
for row in rows:
print(row.user_id, row.user_name)
由於execute
返回的是cursor本身,所以如果你需要一次直接獲取所有內容可以直接使用cursor本身來獲取:
cursor.execute("select user_id, user_name from users"):
for row in cursor:
print(row.user_id, row.user_name)
增刪改資料庫的內容也是直接傳遞sql語句給execute方法。但要注意執行之後需要用commit提交變更:
cursor.execute("insert
into products(id, name) values ('pyodbc', 'awesome library')")
conn.commit()
cursor.execute("
delete
from products where id <> ?", 'pyodbc')
print('deleted {} inferior products'.format(cursor.rowcount))
conn.commit()
localhost無法連線sqlserver
因為工作關係我的電腦安裝了2012 2017兩個版本的sqlserver,之後把2017的解除安裝了,出現了vs開啟專案不報錯,一直在轉圈的問題,之後試過本機登入sqlserver 發現登不上,要指定例項才可以。開啟配置管理器 1.開啟sqlserver網路配置,點選例項協議 2.雙擊tcp ip ...
資料庫連線池 Oracle和SQL Server
近期看到許多朋友在問資料庫連線池的問題,所以特地總結了一下.以下是oracle和sql server在配置連線池時的區別 1.oracle與sql server在配置連線池時的區別 tomcat配置檔案中 oracle的配置方法 urljdbc oracle thin 172.28.122.49 1...
Python 讀取文字檔案到sql server
import json import pymysql import sqlite3 import re import pyodbc import os 載入所需模組 sqlconn pyodbc.connect driver server 伺服器名稱 database 資料庫名稱 連線資料庫 cur...