Python批量生成SQL Insert语句的两种实现方式
本文介绍使用Python批量生成数据库Insert语句的两种常用方法。第一种通过字符串直接拼接构建SQL,第二种利用列表存储字段值并在生成后替换括号符号。文章提供了完整的代码示例及注意事项,帮助开发者高效处理大量数据插入场景。
首先,需要明确目标数据库表的结构,即建表语句。这是生成Insert语句的基础,确保生成的SQL能正确对应数据库字段。

接下来,我们需要确定最终生成的Insert语句的目标格式。这包括表名、字段列表以及对应的值格式,为后续代码生成提供模板参考。
INSERT INTO `bidprcu_dic_a`(
`DIC_ID`, `DIC_TYPE_CODE`, `DIC_TYPE_NAME`, `DATA_DIC_CODE`, `DATA_DIC_NAME`, `PRNT_CODE`, `SRT`, `MEMO`, `DATA_SOUC`, `RID`, `CRTER_ID`, `CRTER_NAME`, `CRTE_OPTINS_NO`, `CRTE_TIME`, `OPT_TIME`, `OPTER_ID`, `OPTER_NAME`, `OPTINS_NO`, `UPDT_TIME`, `INVD_FLAG`)
VALUES ('1', 'cert_type', '证件类型', '11', '营业执照', '', NULL, '', NULL, '', NULL, NULL, NULL, '2020-07-07 11:30:39', NULL, NULL, NULL, NULL, '2020-07-07 11:30:39', '0');
方法一采用Python字符串拼接的方式生成Insert语句。通过定义变量并直接拼接成完整的SQL字符串,这种方法逻辑直观,易于理解。
#生成的目标insert语句
"""
INSERT INTO `bidprcu_dic_a`(
`DIC_ID`, `DIC_TYPE_CODE`, `DIC_TYPE_NAME`, `DATA_DIC_CODE`, `DATA_DIC_NAME`, `PRNT_CODE`, `SRT`, `MEMO`, `DATA_SOUC`, `RID`, `CRTER_ID`, `CRTER_NAME`, `CRTE_OPTINS_NO`, `CRTE_TIME`, `OPT_TIME`, `OPTER_ID`, `OPTER_NAME`, `OPTINS_NO`, `UPDT_TIME`, `INVD_FLAG`)
VALUES ('1', 'cert_type', '证件类型', '11', '营业执照', '', NULL, '', NULL, '', NULL, NULL, NULL, '2020-07-07 11:30:39', NULL, NULL, NULL, NULL, '2020-07-07 11:30:39', '0');
"""
import uuid
def create_uid():
return str(uuid.uuid1())
f =open('0524insert.txt','w')
for i in range(1,3):
DIC_ID=create_uid()
DIC_TYPE_CODE = "cert_type"
DIC_TYPE_NAME="证件类型"
DATA_DIC_CODE="11"
DATA_DIC_NAME="营业执照"
PRNT_CODE=""
SRT="NULL"
CRTE_TIME="2020-07-07 11:30:39"
UPDT_TIME="2020-07-07 11:30:39"
INVD_FLAG="0"
sql = "INSERT INTO bidprcu_dic_a(DIC_ID,DIC_TYPE_CODE,DIC_TYPE_NAME,DATA_DIC_CODE,DATA_DIC_NAME,PRNT_CODE,SRT,CRTE_TIME,UPDT_TIME,INVD_FLAG) "\
+"VALUES" +"(" +"'"+DIC_ID+"'"+",'"+DIC_TYPE_CODE+"'"+",'"+DIC_TYPE_NAME+"'"+",'"+DATA_DIC_CODE+"'"+",'"+DATA_DIC_NAME+"'"+",'"+PRNT_CODE+"'"+",'"+SRT+"'"+",'"+CRTE_TIME+"'"+",'"+UPDT_TIME+"'"+","+INVD_FLAG+""+")"+";"
print(sql)
f.write(sql)
f.write("\n")
f.close()
执行上述代码后,最终生成的数据将写入指定文件。每行生成一条完整的Insert语句,包含所有字段的值,格式符合SQL标准。
示例生成的具体Insert语句如下:INSERT INTO bidprcu_dic_a(DIC_ID,DIC_TYPE_CODE,DIC_TYPE_NAME,DATA_DIC_CODE,DATA_DIC_NAME,PRNT_CODE,SRT,CRTE_TIME,UPDT_TIME,INVD_FLAG) VALUES('6b854a06-bcf9-11eb-8936-e454e805d291','cert_type','证件类型','11','营业执照','','NULL','2020-07-07 11:30:39','2020-07-07 11:30:39',0);
方法二则利用Python列表(List)来管理字段值。先生成包含所有值的列表,在最终拼接SQL时,将列表转换为字符串并替换方括号为圆括号,从而生成合法的Insert语句。
# 生成的目标insert语句
"""
INSERT INTO `bidprcu_dic_a`(
`DIC_ID`, `DIC_TYPE_CODE`, `DIC_TYPE_NAME`, `DATA_DIC_CODE`, `DATA_DIC_NAME`, `PRNT_CODE`, `SRT`, `MEMO`, `DATA_SOUC`, `RID`, `CRTER_ID`, `CRTER_NAME`, `CRTE_OPTINS_NO`, `CRTE_TIME`, `OPT_TIME`, `OPTER_ID`, `OPTER_NAME`, `OPTINS_NO`, `UPDT_TIME`, `INVD_FLAG`)
VALUES ('1', 'cert_type', '证件类型', '11', '营业执照', '', NULL, '', NULL, '', NULL, NULL, NULL, '2020-07-07 11:30:39', NULL, NULL, NULL, NULL, '2020-07-07 11:30:39', '0');
"""
import uuid
def create_uid():
return str(uuid.uuid1())
f = open('0524insert.txt', 'w')
value = []
for i in range(1, 3):
list = []
DIC_ID = list.append(create_uid())
DIC_TYPE_CODE = list.append("cert_type")
DIC_TYPE_NAME = list.append("证件类型")
DATA_DIC_CODE = list.append(11)
DATA_DIC_NAME = list.append("营业执照")
PRNT_CODE = list.append("")
SRT = list.append("NULL")
CRTE_TIME = list.append("2020-07-07 11:30:39")
UPDT_TIME = list.append("2020-07-07 11:30:39")
INVD_FLAG = list.append(0)
print(list)
a = value.append(list)
c = str(list)
print(c)
c = c.replace("[", "(").replace("]", ")")
print(c)
sql = "INSERT INTO bidprcu_dic_a(DIC_ID,DIC_TYPE_CODE,DIC_TYPE_NAME,DATA_DIC_CODE,DATA_DIC_NAME,PRNT_CODE,SRT,CRTE_TIME,UPDT_TIME,INVD_FLAG) " \
+ "VALUES" + c + ";"
print(sql)
f.write(sql)
f.write("\n")
f.close()
在使用上述脚本时,请注意以下几点关键事项,以确保生成的SQL语句正确且高效。
1. 在使用脚本时,只需修改range()函数中的参数值即可调整生成的数据条数,例如将range(1, 3)改为其他范围以生成更多或更少的记录。
2. 在生成大批量数据时,由于单线程处理可能耗时较长,可以考虑引入多线程技术来优化脚本性能。这需要在后续学习中进一步实现和优化该脚本。
到此这篇关于使用python批量生成insert语句的方法的文章就介绍到这了,更多相关python批量生成insert语句内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









