sqlacodegen使用方法

1、在虚拟环境里执行了:pip install sqlacodegen  (注意:非flask-sqlacodegen)

2、在代码内配置数据库环境,指定表

 1 # -*- coding:utf-8 -*-
 2 
 3 import os
 4 from contextlib import contextmanager
 5 from typing import Generator
 6 from sqlalchemy import create_engine
 7 from sqlalchemy.orm import sessionmaker
 8 
 9 HOST = '192.168.10.10'
10 PORT = 3306 
11 USERNAME = 'abc'
12 PASSWORD = 'abc'
13 DB = 'abc'
14 
15 DB_URI = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DB}'
16 
17 engine = create_engine(DB_URI, pool_pre_ping=True)
18 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
19 
20 # 创建session
21 DbSession = sessionmaker(bind=engine)
22 db_session = DbSession()
23 
24 @contextmanager
25 def session_maker(session=db_session):
26     try:
27         yield session
28         session.commit()
29     except:
30         session.rollback()
31         raise
32     finally:
33         session.close()
34 
35 def get_db() -> Generator:
36     """
37     get SQLAlchemy session to curd
38     :return: SQLAlchemy Session
39     """
40     db = None
41     try:
42         db = SessionLocal()
43         yield db
44     finally:
45         if db:
46             db.close()
47 
48 def get_db_connect() -> Generator:
49     """
50     get SQLAlchemy connect to exec sql
51     :return: SQLAlchemy connect
52     """
53     conn = None
54     try:
55         conn = engine.connect()
56         yield conn
57     finally:
58         if conn:
59             conn.close()
60 
61 if __name__ == '__main__':
62     # 根据数据库内的结构,生成模型文件
63     # 指定表
64     tables = ['applications','modules','pages','projects']
65     sqlacodegen_sql = f'sqlacodegen {DB_URI} --outfile=model_with_deployed.py --tables {",".join(tables)}'
66 
67     # 所有表
68     # sqlacodegen_sql = f'sqlacodegen {DB_URI} --outfile=all_db_models.py'
69     
70     os.system(sqlacodegen_sql)

3、执行代码


问题1:执行代码时提示:‘sqlacodegen‘ 不是内部或外部命令,也不是可运行的程序或批
解决方案:windows电脑的环境变量设置里的【**用户变量】内的【Path】进行编辑添加:

%USERPROFILE%\AppData\Roaming\Python\Python310\Scripts

(不行的话检查下python的位置,调整下上述路径...)

image

 
问题2:在系统cmd命令行内执行sqlacodegen --version可以正常返回sqlacodegen版本信息,在编辑器内执行时(我出现问题的是Visual Code)提示上面【问题1】的错误
解决方案:重启整个编辑器软件而非单个项目

posted @ 2025-07-30 14:20  我得想个好名字  阅读(73)  评论(0)    收藏  举报