postgres数据库使用sqlacodegen将已存在的表生成对应的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版本,会报错。

posted @   kaer_invoker  阅读(429)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2021-07-12 CSS学习笔记(一)-10.盒子模型
2021-07-12 CSS学习笔记(一)-9.CSS三大特性
2021-07-12 CSS学习笔记(一)-8.背景
2021-07-12 CSS学习笔记(一)-7.小案例-导航侧边栏样式
2021-07-12 CSS学习笔记(一)-6.元素显示模式
点击右上角即可分享
微信分享提示