Python數據庫模塊pymssql連接SQLServer數據庫操作詳解
最近需要使用到SQLServer數據庫,之前一直使用的是MySQL數據庫,我比較喜歡使用Python,之前一直使用的是pymysql作為數據庫的操作工具,現在需要換成pymssql了,使用方法大概相同,查資料的過程中發現網上很多資料講的都是部分的,這里總結了一下最近的操作,詳細地給出了操作代碼,相信很好看明白,希望能幫到需要的人。
下面是具體的實現:
#!usr/bin/env python
# encoding:utf-8
'''
__Author__:沂水寒城
功能:使用pymssql連接SQLServer測試使用
'''
import sys
import logging
import pymssql
reload(sys)
sys.setdefaultencoding("utf-8")
LOG_FORMAT="%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT="%m-%d-%Y %H:%M:%S %p"
logging.basicConfig(filename='SQLServer.log',level=logging.DEBUG,format=LOG_FORMAT,
datefmt=DATE_FORMAT)
#數據庫的;連接配置信息
config_dict={
'user':'你的用戶名',
'password':'你的密碼',
'host':'你要連接的host地址',
'database':'你要操作的數據庫'
}
tablename='你要操作的表名'
def SQLServer_connect(config_dict):
'''
SQLServer 數據庫連接
'''
connect=pymssql.connect(**config_dict)
print 'Connect Successful!!!'
return connect
def select_k_records(config_dict,tablename,topk=100):
'''
從SQLServer中選取前k條記錄
'''
try:
connect=SQLServer_connect(config_dict)
cursor=connect.cursor()
#統計記錄數量
result=[]
cursor=connect.cursor()
select_sql='SELECT * FROM %s' %tablename
print 'select_sql is: ',select_sql
cursor.execute(select_sql)
row=cursor.fetchone()
while row:
if len(result)<topk:
result.append(row)
row=cursor.fetchone()
print row
else:
break
print 'result: '
print result
connect.close()
cursor.close()
except Exception, e:
print "elect_sql error: " + e
finally:
connect.close()
return result
def create_new_table(config_dict,tablename):
'''
創建表
'''
connect=SQLServer_connect(config_dict)
cursor=connect.cursor()
#cursor.execute('select * into WZ_cgb_test from WZ_OA_PUBLICOPINION where 1=2')
#省略號替換成自己的字段信息即可
cursor.execute("""
CREATE TABLE %s (
id VARCHAR(32) NOT NULL,
name VARCHAR(255) NULL,
......
PRIMARY KEY(id)
)""" %tablename
)
connect.commit() #記得提交數據庫事物操作
connect.close()
cursor.close()
def delete_record(config_dict,delete_sql):
'''
從 SQLServer 中刪除數據記錄
'''
try:
connect=SQLServer_connect(config_dict)
cursor=connect.cursor()
cursor.execute(delete_sql)
connect.commit()
print 'DeleteOperation Finished!!!'
except Exception, e:
print "delete_sql error: " + e
finally:
connect.close()
def count_records_num(config_dict,tablename):
'''
統計SQLServer中的數據記錄數量
'''
try:
connect=SQLServer_connect(config_dict)
cursor=connect.cursor()
totalNum=cursor.rowcount
print 'Total Records Number is: ',str(totalNum)
connect.close()
cursor.close()
except Exception, e:
print "count_sql error: " + e
finally:
connect.close()
return len(result)
def insert_record(config_dict,insert_sql):
'''
向SQLServer中插入數據
'''
try:
connect=SQLServer_connect(config_dict)
cursor=connect.cursor()
cursor.execute(insert_sql)
connect.commit()
print 'InsertOperation Finished!!!'
except Exception, e:
print "insert_sql error: " + e
finally:
connect.close()
if __name__ == "__main__":
count_records_num(config_dict,tablename)
#select_k_records(config_dict,tablename,topk=10)
測試結果如下:
Connect Successful!!!
select_sql is: SELECT * FROM ******
Total Records Number is: 14750
[Finished in 3.3s]
其他的功能也都測試了,這里就不列舉了,感興趣的話可以試試。
數據庫的連接配置換成自己的就行了。