需要安装的包如下:
greenlet==1.1.2
importlib-metadata==4.12.0
inflect==5.6.1
psycopg2==2.9.3
sqlacodegen==3.0.0rc1
SQLAlchemy==1.4.39
zipp==3.8.0
代码如下:
import os
from tools.db import DB
import threading
def gen_table_model(tablename):
os.system(f'sqlacodegen postgresql+psycopg2://username:password@192.168.80.150:5432/dbname --tables {tablename}> ./3.0.0/{tablename}.py')
if __name__ == '__main__':
db = DB("192.168.80.150", "5432", "username", "password", "dbname")
db.connect()
all_tables = db.fetch_all("SELECT tablename FROM pg_tables WHERE tablename not LIKE 'pg%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename;")
db.close()
table_list = []
for table in all_tables:
print(table)
print(type(table))
for t in table:
table_list.append(t)
threads=[]
for table in table_list:
threads.append(
threading.Thread(target=gen_table_model,args=(table,))
)
for thread in threads:
thread.start()
for thread in threads:
thread.join()
注意,由于数据库自增值的类型是identity,这个转换时只有在sqlacodegen 3.0.0版本才生效,如果使用2.4.x版本,会报错。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/273834.html