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]

 其他的功能也都测试了,这里就不列举了,感兴趣的话可以试试。

       数据库的连接配置换成自己的就行了。

       欢迎交流。

猜你喜欢

转载自blog.csdn.net/tlammon/article/details/106616565