Python默認的數據庫是 SQLlite,不過它對MySql以及SQL server的支持也可以。如果想鏈接操作SQL server,需使用第三方包pymssql
pymssql
是一個Python的數據庫接口,基於FreeTDS構建,對_mssql模塊進行了封裝,遵循Python的DBAPI規范,而FreeTDS是一個C語言連接sqlserver的公共開源庫
工作原理
- 使用connect創建連接對象;
- connect.cursor創建游標對象,SQL語句的執行在游標上執行;
- cursor.execute()方法執行SQL語句,cursor.fetch()方法獲取查詢結果;
- 如果有反向修改,需執行connect.commit();
- 調用close方法關閉游標cursor和數據庫連接;
注意:https://www.cnblogs.com/baiyangcao/p/pymssql_basic.html
- 一個連接一次只能有一個游標的查詢處於活躍狀態!
- 可以通過使用
with
語句來省去顯示的調用close
方法關閉連接和游標 - pymssql 2.0.0以上的版本可以通過
cursor.callproc
方法來調用存儲過程
常用封裝
class MSSQL:
# 類的構造函數,初始化數據庫連接ip或者域名,以及用戶名,密碼,要連接的數據庫名稱
def __init__(self,host,user,pwd,db):
self.host=host
self.user=user
self.pwd=pwd
self.db=db
# 得到數據庫連接信息函數,返回: conn.cursor()
def __GetConnect(self):
self.conn=pymssql.connect(host=self.host,
user=self.user,
password=self.pwd,
database=self.db,
charset='utf8')
cur=self.conn.cursor() #將數據庫連接信息,賦值給cur。
if not cur:
raise(NameError,"連接數據庫失敗")
else:
return cur
#執行查詢語句,返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的字段
def ExecQuery(self,sql):
cur = self.__GetConnect() #獲得數據庫連接信息
cur.execute(sql) #執行Sql語句
resList = cur.fetchall() #獲得所有的查詢結果
self.conn.close() #查詢完畢后必須關閉連接
return resList #返回查詢結果
#執行Sql語句函數,無返回結果的,方向修改的
def ExecNonQuery(self,sql):
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()