1. 程式人生 > 實用技巧 >Python資料庫模組pymssql連線SQLServer資料庫操作

Python資料庫模組pymssql連線SQLServer資料庫操作


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]
        其他的功能也都測試了,這裡就不列舉了,感興趣的話可以試試。

       資料庫的連線配置換成自己的就行了。