ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

postgres数据库使用sqlacodegen将已存在的表生成对应的model

2022-07-12 10:04:00  阅读:246  来源: 互联网

标签:__ tables postgres sqlacodegen tablename db threads table model


需要安装的包如下:
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版本,会报错。

标签:__,tables,postgres,sqlacodegen,tablename,db,threads,table,model
来源: https://www.cnblogs.com/invoker2021/p/16468941.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有