對于一個應(yīng)用而言數(shù)據(jù)庫的使用是相當(dāng)重要的。現(xiàn)在主流的數(shù)據(jù)庫都是使用MySQL或者oracle,但還是有一部分用戶使用微軟的SqlServer。所以python連接SqlServer數(shù)據(jù)庫是相當(dāng)必要的。那么python怎么操作SqlServer呢?接下來這篇文章告訴你。
先利用pip安裝pymssql庫
pip install pymssql
具體連接、測試代碼:
# server默認(rèn)為127.0.0.1,如果打開了TCP動態(tài)端口的需要加上端口號,如'127.0.0.1:1433'
# user默認(rèn)為sa
# password為自己設(shè)置的密碼
# database為數(shù)據(jù)庫名字
server = '127.0.0.1'
user = "sa"
password = "123456"
database = "pubs"
conn = pymssql.connect(server, user, password, database)
# 可簡化為conn = pymssql.connect(host='localhost', user='sa', password='123456', database='pubs')
cursor = conn.cursor()
cursor.execute('SELECT * FROM titles')
print( cursor.fetchall() )
# 如果用pandas讀取數(shù)據(jù)庫
import pymssql
import pandas as pd
conn = pymssql.connect('IP地址','賬號','密碼','數(shù)據(jù)庫')
sql_1 = "SELECT Id,creat_time from 表名"
#利用pandas直接獲取數(shù)據(jù)"
data = pd.read_sql(sql_1, conn)
conn.close()
print(data)
封裝好的版本:
#coding=utf-8
# sqlserver的連接
import pymssql
class MSSQL:
def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db
def __GetConnect(self):
"""
得到連接信息
返回: conn.cursor()
"""
if not self.db:
raise(NameError,"沒有設(shè)置數(shù)據(jù)庫信息")
self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
cur = self.conn.cursor()
if not cur:
raise(NameError,"連接數(shù)據(jù)庫失敗")
else:
return cur
def ExecQuery(self,sql):
"""
執(zhí)行查詢語句
返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的字段
"""
cur = self.__GetConnect()
cur.execute(sql)
resList = cur.fetchall()
#查詢完畢后必須關(guān)閉連接
self.conn.close()
return resList
def ExecNonQuery(self,sql):
"""
執(zhí)行非查詢語句
調(diào)用示例:
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
"""
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
def main():
# host默認(rèn)為127.0.0.1,如果打開了TCP動態(tài)端口的需要加上端口號,如'127.0.0.1:1433'
# user默認(rèn)為sa
# pwd為自己設(shè)置的密碼
# db為數(shù)據(jù)庫名字
ms = MSSQL(host='127.0.0.1',user="sa",pwd="123456",db="pubs")
resList = ms.ExecQuery("SELECT * FROM titles")
print(resList)
if __name__ == '__main__':
main()
如果出現(xiàn)pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9: Unable to connect: Adaptive Server is unavailable or does not exist (SZSSQLEXPRESS) ')類似保錯,有以下幾個可能的原因:
1.數(shù)據(jù)庫名字寫錯
2.tcp/ip協(xié)議未開啟,這個位于(右鍵此電腦,點擊管理,點擊服務(wù)與應(yīng)用程序,點擊sql配置管理器,點擊sql server網(wǎng)絡(luò)配置,點擊mssqlserver的協(xié)議,右鍵tcp/ip,點擊啟用,重啟電腦后才會生效)
3.動態(tài)端口錯誤,默認(rèn)是沒有打開動態(tài)端口的,如果打開了就需要寫端口號,在2中的tcp/ip協(xié)議中查看動態(tài)端口號,點擊tcp/ip協(xié)議,點擊ip地址,然后翻到最下面,找到ipall 里面的動態(tài)端口號,也可以將動態(tài)端口號刪掉,然后不寫
4.sa用戶登錄未啟用
打開sql server management studio,點擊安全性,點擊登錄名,如果sa項出現(xiàn)紅色的×則說明sa用戶登錄未啟用,右鍵sa點擊屬性,點擊狀態(tài)即可啟用。
到此這篇怎么用python操作sql server的文章就介紹到這了,更多python學(xué)習(xí)內(nèi)容請搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章。