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()
时间: 2024-10-24 18:50:48

Python批量插入SQL Server数据库的相关文章

SQL SERVER数据库master数据库恢复

一.实验步骤大概 1.先创建一个数据库和表,用来做恢复之后的验证. 2.把master数据库提前做好备份. 3.模拟master数据库删除,在服务里边关闭SQL server服务然后才能删除master数据库. 4.重启SQL server服务,发现无法启动! 5.重建数据库. 6.进入单用户模式,恢复master数据库. 7.再次重启,进入数据库查看之前创建的数据库和表已经恢复,发现恢复正常! *:本案例实验环境为2008 R2 二.实验步骤 1.先创建一个数据库和表,用来做恢复之后的验证.

python操作sql server数据库

pyodbc库 可用于SQL Server数据库的连接,但除此之外,还可用于Oracle,Excel, MySql等,安装Anaconda时默认已安装. 安装:pip install pyodbc 1.连接数据库 1)直接连接数据库和创建一个游标(cursor)(使用过) coxn=pyodbc.connect(driver="ODBC Driver 13 for SQL Server",server="localhost",user="sa",

SQL Server数据库大型应用解决方案总结(转载)

转载地址:http://hb.qq.com/a/20120111/000216.htm 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题. 一.负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作.共同负载.均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器.

DataTable 导入 SQL SERVER 数据库

public void InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum) { //string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString(); //声明数据库连接 SqlConnection conn = new SqlConnection(strco

将ACCESS数据批量导入SQL SERVER

代码: IF OBJECT_ID('Sp_InputAccesstoSQL') IS NOT NULL     DROP PROC Sp_InputAccesstoSQL GO CREATE PROC Sp_InputAccesstoSQL @dir NVARCHAR(100),--ACCESS文件存放路径:如D:\Files @tabname NVARCHAR(50) --定义导入到数据库中的表名,如果存在就不需要创建 AS SET NOCOUNT ON DECLARE @cmd NVARCH

SQL server数据库的在server 2008R2上的安装及基本管理

         SQL server数据库的在server 2008R2上的安装及基本管理(一) 选择SQL的数据库的镜像文件 双击setup.ext 执行安装程序 这里选择安装项,并选择全新安装 安装的环境监测全部通过 因为这里是使用的破解版的镜像,所以会自动生成密钥 再一次检测安装环境 这里选择第一项 这里选择全部的功能 这里选择默认的实例名 这里将系统的内置账户添加到服务中,NT 这里选择混合式身份 验证,并输入sa的密码.并添加本地的管理员 这里添加本地的管理员账户 选择第一项 开始安

50种方法优化SQL Server数据库查询(转载)

原文地址:http://www.cnblogs.com/zhycyq/articles/2636748.html 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用

提高SQL Server数据库效率常用方法

1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有优化 ●可以通过如下方法来优化查询 : 1.把数据.日志.索引放到不同的

c#.net 是如何访问 SQL Server 数据库

1.导入命名空间 using System.Data.SqlClient; //连接SQLServer 数据库专用 2.创建连接 SqlConnection lo_conn = New SqlConnection("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码"); 3.打开连接,第2步并没有真正连接数据库 lo_conn.Open(); //真正与数据库连接 4.向数据库发送SQL命令要使用SqlCommand: SqlCommand l