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*/); -- 这里的逗号要去掉 加了红色的背景色那
Python 生成MYSQL inser语句的更多相关文章
- Springboot接口简单实现生成MySQL插入语句
Springboot接口简单实现调用接口生成MySQL插入语句 在实际测试中,有这样一个需求场景,比如:在性能压力测试中,可能需要我们事先插入数据库中一些相关联的数据. 我们在实际测试中,遇到问题,需 ...
- python 3 mysql sql逻辑查询语句执行顺序
python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_t ...
- Python操作Mysql数据库时SQL语句的格式问题
一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...
- [置顶] LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句
LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 declare @sql varchar(4000), @dirpath varch ...
- MySQL基础语句与其在Python中的使用
一.MySQL基础语句 $ mysql -u root -p (有密码时) $ mysql -u root (无密码时) QUIT (or \q) 退出 查看当前所有数据库 show dat ...
- python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数
python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- 使用 python 管理 mysql 开发工具箱 - 1
Mysql 是一个比较优秀的开源的数据库,很多公司都在使用.作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现. 一.模块 Co ...
- Python 操作 MySQL 之 pysql 与 ORM(转载)
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
随机推荐
- keycloak 了解
Keycloak 是一个针对Web应用和 RESTful Web 服务提供 SSO 集成.基于 OAuth 2.0 和 JSON Web Token(JWT) 规范.目前用于实现 JBoss 与 Wi ...
- nginx 启用http2 https 无法访问的问题
原因: 1. openssl 版本过低 解决方法:进行升级 yum update openssl 2.ssl_ciphers 配置有问题 解决方法:修改为 ssl_ci ...
- mysql+matlab配置
mysql 中一直出现'> 单双引号没有配对 mysql 连接matlab 1, 到mysql官网下载 http://dev.mysql.com/downloads/connector/j/(m ...
- bzoj3258秘密任务
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3258 因为只走最短路,所以先正反两遍djkstra,新建边. 这里的边是单向边.所以要用原来 ...
- MEF学习总结(4)---Container层
通过AttributeedModelPrograming,我们可以声明暴露组件,依赖组件,发现组件,但是所有这些需要有一个触发点.即需要把所有这些组合在一起来协同工作,最终实现依赖注入.这就是Cont ...
- ubuntu 修改分辨率为自定义分辨率
在ubuntu14.04虚拟机上修改自定义大小的桌面屏幕分辨率,使用的命令:cvt,xrandr 0.首先查看下当前已经提供的分辨率设置:xrandr -q root@xxx:/home/xxx/De ...
- Jquery学习小计
实时监听输入框值变化 首先创建Jquery.fn扩展 jQuery.fn.extend({ inputChange: function(callback){ if($.support.leadingW ...
- Hessian简要入门
原本系统之间通信采用Restful Web Service,但其中没有考虑安全性问题,因此决定使用稍微复杂点的二进制协议,Hessian服务. Hessian是一个轻量级的Remoting O ...
- 解决easyui jQuery JS的for循环调用ajax异步问题
由于JS的for循环与ajax非同步运行,因此导致for循环结束了而ajax却还未执行,解决此方法有两种 1.设置ajax参数async为false,即与js同步,默认是true(异步). 这里首先引 ...
- 0CTF题中的神奇宝贝WP
前言: 今天被尘少拉去做题 然后做到一个脑洞打开的题..... 神奇宝贝!?!? 正文: 一开始来到这=-= 弱密码猜测:admin admin 验证码用calc去算 然后成功进入 第一次去做神奇宝贝 ...