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

       數據庫的連接配置換成自己的就行了。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM