Python 生成MYSQL inser语句

背景:

  一般来说,navicat生成的insert已经够用了

  如果说一张表有2,30个字段,每个字段还得一一对上,其实是很难的。所以抽空写了个小程序。用它完全不用担心字段对不上了。因为没有时间,需要手动和程序一起执行,但平时用用也是够了,,如果会改的话,可以自己修改。大概思路就这样:先去information_schema库里把字段和说明取出来,再拼接成insert

  环境是python2.7

filename ='user_base_info'
file = open('c:\\table\\new\\'+filename+'.txt', 'r') #sql文件地方
sql_filds=''
sql_values=''
while 1:
    line = file.readline()

    arr = line.replace("\n", "").split('$')  #
    if len(arr) ==4:
        sql_filds+=arr[0]+','
        sql_values+='\'\',/*'+arr[1].replace(";","")+'_'+arr[2]+'_'+arr[3]+'_'+arr[0]+'*/\n'
    if not line:
        break
    pass

sql_filds =sql_filds[:-1]
sql_values=sql_values[:-1]
#sql_values=sql_filds[0:len(sql_values)-1];
# print sql_filds
#print sql_values
sql='insert into '+filename+'('+sql_filds+')\n values \n('+sql_values+');'
print sql

 

怎么使用:

1、先执行sql 查询出表里的字段和对应的说明。在mysql中,每个数据库都对应有一个对应架构的数据库information_schema,这个库可以查出表的所有字段和说明。

 SELECT COLUMN_NAME,COLUMN_COMMENT,COLUMN_TYPE,IS_NULLABLE  FROM `COLUMNS` t where t.TABLE_NAME ='t_user_base_info' and t.TABLE_SCHEMA='gamemall_ucenter';

2、导出,将上面的数据导出为以下这种格式,并保存在一个地方

导出后,文件格式为:

uid$用户ID$bigint(20)$NO
account$喵号$bigint(20)$NO
avatar$头像路径$varchar(256)$YES
user_name$用户昵称$varchar(30)$NO
gender$性别(0-男,1-女)$smallint(1)$YES
birthdate$出生日期$date$YES
user_status$用户状态(0-正常,1-冻结)$smallint(1)$NO
first_zm$首字母$varchar(1)$YES
sign_name$用户签名$varchar(100)$YES
area$用户所在地区$varchar(20)$YES
user_register_chl$用户所属渠道号$varchar(50)$YES
has_identified$1、是,2、否$smallint(6)$YES
ctime$创建时间$int(11)$NO
utime$更新时间$int(11)$NO

3、修改代码

filename ='user_base_info'
file = open('c:\\table\\coupon\\'+filename+'.txt', 'r') // sql文件地方

4、执行结果,注意后面多了一个逗号,需要手动去掉。这样就可以一个一个字段对起来啦

insert into user_base_info(uid,account,avatar,user_name,gender,birthdate,user_status,first_zm,sign_name,area,user_register_chl,has_identified,ctime,utime)
 values 
('',/*用户ID_bigint(20)_NO_uid*/
'',/*喵号_bigint(20)_NO_account*/
'',/*头像路径_varchar(256)_YES_avatar*/
'',/*用户昵称_varchar(30)_NO_user_name*/
'',/*性别(0-男,1-女)_smallint(1)_YES_gender*/
'',/*出生日期_date_YES_birthdate*/
'',/*用户状态(0-正常,1-冻结)_smallint(1)_NO_user_status*/
'',/*首字母_varchar(1)_YES_first_zm*/
'',/*用户签名_varchar(100)_YES_sign_name*/
'',/*用户所在地区_varchar(20)_YES_area*/
'',/*用户所属渠道号_varchar(50)_YES_user_register_chl*/
'',/*1、是,2、否_smallint(6)_YES_has_identified*/
'',/*创建时间_int(11)_NO_ctime*/
'',/*更新时间_int(11)_NO_utime*/); -- 这里的逗号要去掉 加了红色的背景色那

 

posted @ 2018-01-11 10:16  米蓝  阅读(855)  评论(0编辑  收藏  举报