python 連接sqlserver,mysql

python連接sqlserver有很多包可以選擇,有pyodbc和pymssql,這里把代碼都貼出來(lái),但是希望大家用pyodbc,因?yàn)樵趯?shí)踐中跑幾百萬(wàn)的數(shù)據(jù)量跑了一天的時(shí)候連接會(huì)斷,google Stack Overflow之后也沒(méi)有很好的解決方案,最后用pyodbc就解決了該問(wèn)題(同事也有類似經(jīng)歷)。

pyodbc

建立連接,建立游標(biāo),通過(guò)游標(biāo)執(zhí)行語(yǔ)句,拿到結(jié)果。

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)

如果想一次拿回所有結(jié)果
result=cursor.fetchall()
但最好還是把游標(biāo)的結(jié)果當(dāng)成一個(gè)迭代器然后用循環(huán)一個(gè)個(gè)取
for i in cursor:print(i[0])

如果是update的話,最好新建一個(gè)連接再新建一個(gè)游標(biāo)(查詢可以同一個(gè)游標(biāo)執(zhí)行,新的查詢代替舊的查詢語(yǔ)句)。

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

這里也貼出來(lái)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()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,853評(píng)論 18 399
  • 語(yǔ) 句 功 能 數(shù)據(jù)操作 SELECT——從數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)行和列INSERT——向數(shù)據(jù)庫(kù)表添加新數(shù)據(jù)行DELE...
    戰(zhàn)敭閱讀 5,242評(píng)論 0 53
  • 第八章 數(shù)據(jù)查詢和選擇 ||| 第十章 獲取GIS數(shù)據(jù)列表和描述信息 我們將在本章中介紹以下幾個(gè)案例: 游標(biāo)對(duì)象(...
    muyan閱讀 21,977評(píng)論 5 21
  • 保持每天成長(zhǎng)不易,做到每天的成長(zhǎng)率更是不易了。那么在我看來(lái)應(yīng)該怎么提高成長(zhǎng)率呢?結(jié)合以前所學(xué)習(xí)的內(nèi)容,我覺(jué)得應(yīng)該...
    lanlana閱讀 193評(píng)論 0 0
  • 我本打算找本短篇小說(shuō)來(lái)做一個(gè)快速閱讀,不料卻被《富士山禁戀》的傳奇所吸引。直到2012年,已有超過(guò)1100...
    清黑色閱讀 3,517評(píng)論 2 2

友情鏈接更多精彩內(nèi)容