Python資料庫模組pymssql連線SQLServer資料庫操作
阿新 • • 發佈:2020-07-28
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] 其他的功能也都測試了,這裡就不列舉了,感興趣的話可以試試。 資料庫的連線配置換成自己的就行了。