python連接sqlserver有很多包可以選擇泰偿,有pyodbc和pymssql熄守,這里把代碼都貼出來,但是希望大家用pyodbc耗跛,因為在實踐中跑幾百萬的數(shù)據(jù)量跑了一天的時候連接會斷裕照,google Stack Overflow之后也沒有很好的解決方案,最后用pyodbc就解決了該問題(同事也有類似經(jīng)歷)调塌。
pyodbc
建立連接晋南,建立游標,通過游標執(zhí)行語句羔砾,拿到結果负间。
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};Server=192.168.0.180;Database=databasename;uid=username;pwd=password')
cursor = conn.cursor()
sql = "select table.a,table.b from table"
cursor.execute(sql)
如果想一次拿回所有結果
result=cursor.fetchall()
但最好還是把游標的結果當成一個迭代器然后用循環(huán)一個個取
for i in cursor:print(i[0])
如果是update的話偶妖,最好新建一個連接再新建一個游標(查詢可以同一個游標執(zhí)行,新的查詢代替舊的查詢語句)政溃。
conn1 = pyodbc.connect('Driver={SQL Server};Server=192.168.0.180;Database=databasename;uid=username;pwd=password')
cursor1 = conn1.cursor()
cursor1.execute("UPDATE table.b SET b=? WHERE a=?", (b_value, a_value))
conn1.commit()
pymssql
這里也貼出來pymssql的代碼
import pymssql
conn= pymssql.connect(host='192.168.0.180', user=username, password=password, database=databasename)
cursor= conn.cursor()
cursor = conn.cursor()
sql = "select table.a,table.b from table"
cursor.execute(sql)
#update
conn1= pymssql.connect(host='192.168.0.180', user=username, password=password, database=databasename)
cursor1= conn1.cursor()
cursor1.execute("UPDATE table.b SET b= %s WHERE a=%s",(b_value, a_value))
conn1.commit()
mysql
import MySQLdb.cursors
conn = MySQLdb.connect('192.168.0.180', user=username, password=password, database=databasename, charset='utf8',
cursorclass=MySQLdb.cursors.SSCursor)
cursor = conn.cursor()
sql ="select table.a,table.b from table"
cursor.execute(sql)
#update
conn1 = MySQLdb.connect('192.168.0.180', user=username, password=password, database=databasename, charset='utf8',
cursorclass=MySQLdb.cursors.SSCursor)
cursor1 = conn1.cursor()
cursor1.execute(" update table.b set b=%s where a=%s", (b_value, a_value))
conn1.commit()