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