flask项目中 反向迁移数据的模型到项目中时,报错

脚本文件


"""
下载顺序不能变!!!
pip install sqlacodegen
pip install flask-sqlacodegen==1.1.8
"""

import os, sys

this_dir = os.path.dirname(__file__)
parent_dir = os.path.pardir
sys.path.append(os.path.abspath(os.path.join(os.path.join(this_dir, parent_dir), parent_dir)))

import settings

gen_mode_1 = 'flask-sqlacodegen --flask'
gen_mode_2 = 'sqlacodegen'


def create_app_models():
    db_url = settings.db_uri()  # 'mysql+pymysql://root:333@127.0.0.1:3306/teng'
    plants_path = os.path.dirname(__file__) + '\\generated_models'
    print(plants_path)  # 脚本文件路径

    model_path_1 = os.path.join(plants_path, 'flasksqlalchemy_models_app.py')  # 模型表文件存放路径
    cmd_1 = f"{gen_mode_1} {db_url}"
    # 'flask-sqlacodegen --flask mysql+pymysql://root:333@127.0.0.1:3306/teng'
    try:
        output = os.popen(cmd_1)  # cmd 执行命令
        content = str(output.read())
        with open(model_path_1, 'w+') as f:
            f.write(content)
        print('create1  models successfully!')
    except Exception as e:
        print(e)

    model_path_2 = os.path.join(plants_path, 'sqlalchemy_models_app.py')
    cmd_2 = f'{gen_mode_2} {db_url}'

    try:
        output = os.popen(cmd_2)  # 1
        content = str(output.read())  # 2 这两句话是核心
        with open(model_path_2, 'w+') as f:
            f.write(content)
        print('create2  models successfully!')
    except Exception as e:
        print(e)


if __name__ == '__main__':
    create_app_models()



# 注意 sqlacodegen与flask-sqlacodegen模块有版本冲突,下载顺序不能变
# 先下sqlacodegen,再下flask-sqlacodegen而且该版本还不能高 1.1.8 最好
# 高的话,还会有冲突,  这地方要小心

最后pip list 可以看到
flask-sqlacodegen             1.1.8
sqlacodegen                   2.3.0.post1
SQLAlchemy                    1.4.49


posted @   tengyifan  阅读(11)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示