常规建表语句:

CREATE TABLE `test_table` (

`id` int(11) NOT NULL,

`name` char(64) NOT NULL,

`password` char(64) NOT NULL,

PRIMARY KEY (`name`,`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='test';

解析脚本代码:

# coding:utf-8

import re

deftable_design_transfer(table_design):

type_map= {"varchar":"String","datetime":"DateTime","bigint":"BigInteger","smallint":"SmallInteger","tinyint":"SmallInteger","text":"Text","int":"Integer","double":"Float","char":"String","set":"Enum"}

l= table_design.split("\n") #表设计行拆分

length =len(l)

s=[]

primary_key_l=[]for i in range(length): #遍历表设计行

j = l[length-1-i].strip().split(" ") #倒序遍历,并按空格切分

if len(j)>2: #只关注行长度超过2的元素

column = j[0].replace("`","")

i_type= j[1]if column == "PRIMARY":

primary_key_l= re.sub(r'`|\(|\)','',j[2]).split(",") #拿到主键key

continue

elif column == "CREATE": #获取表名

table_name = j[2].replace("`","")

s.append(" "+'__tablename__ = "%s"' %table_name)

s.append("class %s(Base):" %table_name)continue

elif column in ("UNIQUE",")","KEY"): #非表列名,跳过

continue

if i_type in type_map.keys(): #类型存在映射表中

i_type = i_type.replace(i_type,type_map[i_type])+"()"

elif "(" in i_type and i_type.split("(")[0] in type_map.keys(): #类型有长度声明,提取类型字段,找到映射表映射value,并替换

old_type = i_type.split("(")[0]

new_type= type_map[i_type.split("(")[0]]

i_type=i_type.replace(old_type,new_type)else:print "Catch any case not in type_map:%s" %i_typeif column in primary_key_l: #列名存在主键数组中

i_type = i_type + ", primary_key=True"s.append(" "+column + "= Column(" + i_type + ")")for i in s[::-1]: #反序输出

print i

输出结果:

classtest_table(Base):__tablename__ = "test_table"id= Column(Integer(11), primary_key=True)

name= Column(String(64), primary_key=True)

password= Column(String(64))

sqlalchemy库官方文档:http://docs.sqlalchemy.org/en/latest/contents.html

sqlalchemy库官方文档(中文):http://www.cnblogs.com/iwangzc/p/4112078.html(感谢作者的分享)

faker库官方文档:https://faker.readthedocs.io/en/master/locales/zh_CN.html

faker库博客:https://www.jianshu.com/p/6bd6869631d9

自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明...相关推荐

  1. mysql分片建表语句_Mysql元数据如何生成Hive建表语句注释脚本详解

    前言 本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 最近在将数据从Mysql 等其他关系型数据库 抽取 ...

  2. mysql hive 建表语句_Mysql元数据如何生成Hive建表语句注释脚本详解

    前言 本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 最近在将数据从Mysql 等其他关系型数据库 抽取 ...

  3. java oracle 建表语句_在oracle数据库中创建表语句如何写?

    表名:servicelogs 字段名称类型 idint (主键,自增) servicetypevarchar (100) outsysvarchar (100) methodnamevarchar ( ...

  4. 用来测试的mysql建表语句_软件测试基础——MySQL建库、建表SQL语句

    一.对库的操作 创建库:create database 库名 ; 创建指定字符集的库:create database 库名 charset=utf8; 创建指定字符集并带校验规则的库:create d ...

  5. sqlserver建表语句_重新认识MySQL中的COUNT语句

    在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...

  6. dbeaver导出建表语句_细致入微:如何使用数据泵导出表的部分列数据

    编者按 云和恩墨大讲堂社群(本文底部有入群方式)里有人提出一个需求:一张表数据量很大,如何只导出其中一部分列?云和恩墨CTO.Oracle ACE总监.ACOUG核心专家杨廷琨老师使用了数据泵的方式, ...

  7. mppdb 查看建表语句_内存MPP数据库介绍.pptx

    内存MPP数据库介绍RapidsDB核心架构核心特点全内存分布式数据库,高性能,高吞吐量ACID事务型数据库支持SQL语句高性能存储过程高可用性动态数据导出异地灾备,动态迁移与传统数据库和NoSQL对 ...

  8. 易语言mysql复制表语句_易语言SQL数据库查询语句

    一.Select语句: select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息.复制.创建数据表.其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频 ...

  9. mysql建表语句非空约束默认_Navicat mysql 建表字段 默认值 空白、NULL 、empty string的区别...

    总结在最后,没啥干货 新建一张用户表CREATE TABLE `user` ( `id` bigint(20) DEFAULT NULL COMMENT '编号', `name` varchar(64 ...

最新文章

  1. Android ListView (多个adapter 说明)
  2. SparkSQL概述
  3. chrome 扩展 修改 html,制作并反映Chrome扩展程序中popup.html的更改
  4. Python-面向对象的编程语言
  5. php验证码--图片
  6. leetcode 1723. 完成所有工作的最短时间(二分+剪枝+回溯)
  7. Delphi IOS (二)
  8. Python实现中文文档的简体与繁体互相转换
  9. 网站内容批量抓取和《著作权法》
  10. python之父名言_Python之父:为什么操作符很有用?
  11. Linux篇---Grep和正则匹配
  12. Java 反射Reflection总结一
  13. 什么是数据可视化?hightopo数据可视化助力企业数字化
  14. UC/OSII一些小知识
  15. 图像预处理(Evision)
  16. 成都拓嘉启远:拼多多直通车推广怎么做才能有开好
  17. 六天八小时能否主张加班费?
  18. Unity动画☀️四、动画导入的三种模式:Legacy、Generic 与 Humanoid
  19. C#连接Access数据库(详解)
  20. 数学分析常用的4款软件对比!

热门文章

  1. 按钮垂直居中_带下拉按钮的动态图表
  2. python中集合的元素可以是任意数据类型_Python之基本数据类型——集合数据类型...
  3. PHP导入excel到mysql数据库完整代码附效果图
  4. CesiumLab V1.2 新功能 倾斜数据处理
  5. 中国科协(深圳)海外人才离岸创新创业基地源创力中心开业,主打国际创业服务...
  6. flannel 概述 - 每天5分钟玩转 Docker 容器技术(58)
  7. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠
  8. Robotium初探秘
  9. Android之解析Android Map地图返回的Json数据
  10. 8、进程通信-匿名管道