Python批量插入SQL Server数据库

因为要做性能测试,需要大量造数据到数据库中,于是用python写了点代码去实现,批量插入,一共四张表

简单粗暴地插入10万条数据

import pymssql
import random

__author__ = 'sryan'


class GenerateData:
    def __init__(self):
        print('init')
        self.conn = None
        self.cur = None

    def connect(self, host, user, password, database):
        try:
            self.conn = pymssql.connect(host=host, user=user, password=password, database=database)
            self.cur = self.conn.cursor()
        except Exception, e:
            print e.message

    def disconnect(self):
        try:
            if self.conn is not None:
                self.cur.close()
                self.conn.close()
        except Exception, e:
            print e.message

    def insert_script(self, str_insert, times=1):
        for i in range(times):
            self.cur.execute(str_insert)

    @staticmethod
    def bcustomer_mzn(cst_id, cur):
        instr = "insert into BCUSTOMER_MZN (CST_ID, CST_CTT_ID, CST_GND_ID,"
                  + "CST_NAME, CST_MEMBERSHIPNUM, CST_MOBILE, CST_DELETED_FLAG,CST_CREATION_DT,"
                  + "CST_CREATIONUID, CST_UPDATE_DT, CST_UPDATEUID, CST_MNGT_CNT_ID) values ("
                  + "'" + str(cst_id) + "'" + ","
                  + str("1") + ","
                  + str("1") + ","
                  + "'" + "sryan_" + str(cur) + "'" + ","
                  + "'" + "100" + str(cst_id) + "'" + ","
                  + "'" + " " + "'" + ","
                  + str("0") + ","
                  + "SYSDATETIME()" + ","
                  + "'" + "sryan" + "'" + ","
                  + "SYSDATETIME()" + ","
                  + "'" + "sryan" + "'" + ","
                  + str("1")
                  + ")"
        return instr

    @staticmethod
    def xcustomer_mzn(cst_id):
        instr = "insert into XCUSTOMER_MZN (XCS_CST_ID,XCS_ADT_ID,XCS_MRT_ID,XCS_RVT_ID,XCS_IDCARDNUM) values ("
                + "'" + str(cst_id) + "'" + ","
                + str("1") + ","
                + str("2") + ","
                + str("1") + ","
                + "'" + "32060219800618" + str(random.randint(1111, 9999)) + "'"
                + ")"
        return instr

    @staticmethod
    def bcustomer_reward(cst_id):
        instr = "insert into BCUSTOMERREWARD values ("
                + "'" + "100" + str(cst_id) + "'" + ","
                + str("1") + ","
                + str("2") + ","
                + "null" + ","
                + "null" + ","
                + "null" + ","
                + "null" + ","
                + "null"
                + ")"
        return instr

    @staticmethod
    def bmembership_mzn(cst_id):
        instr = "insert into BMEMBERSHIP_MZN (MMB_ID,MMB_CST_ID,MMB_MEMBERSHIPNUM,"
                + "MMB_ISSUE_DT,MMB_START_DT,MMB_CREATION_DT,MMB_UPDATE_DT) values ("
                + "'" + str(cst_id) + "'" + ","
                + "'" + str(cst_id) + "'" + ","
                + "'" + "100" + str(cst_id) + "'" + ","
                + "SYSDATETIME()" + ","
                + "SYSDATETIME()" + ","
                + "SYSDATETIME()" + ","
                + "SYSDATETIME()"
                + ")"
        return instr

    @staticmethod
    def xmembership_mzn(cst_id):
        instr = "insert into XMEMBERSHIP_MZN (XMB_MMB_ID,XMB_CREATION_DT,"
                + "XMB_CREATIONUID,XMB_UPDATE_DT,XMB_UPDATEUID) values("
                + "'" + str(cst_id) + "'" + ","
                + "SYSDATETIME()" + ","
                + "'" + "sryan" + "'" + ","
                + "SYSDATETIME()" + ","
                + "'" + "sryan" + "'"
                + ")"
        return instr

# 测试代码
d = GenerateData()
d.connect('xx.xxx.xx.xxx', 'xxx', 'xxxx', 'xxxx')
i = 0
for i in range(1, 100000):
    cstid = 2000000 + i
    insert = GenerateData.bcustomer_mzn(cstid, i)
    d.cur.execute(insert)
    insert = GenerateData.xcustomer_mzn(cstid)
    d.cur.execute(insert)
    insert = GenerateData.bcustomer_reward(cstid)
    d.cur.execute(insert)
    insert = GenerateData.bmembership_mzn(cstid)
    d.cur.execute(insert)
    insert = GenerateData.xmembership_mzn(cstid)
    d.cur.execute(insert)

d.cur.execute("select * from XMEMBERSHIP_MZN where XMB_MMB_ID = 2000505")
print d.cur.fetchall()
d.conn.commit()
原文地址:https://www.cnblogs.com/ryansunyu/p/5036240.html