日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發(fā)布時間:2023/11/27 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

常規(guī)建表語句:

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: #列名存在主鍵數(shù)組中

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表对象声明...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:自动获取mysql建表语句_脚本工具---自动解析mysql