我知道我需要在SQLAlchemy中使用MetaData对象,但我不确定如何在类中使用它,
db = SQLAlchemy(app)
meta =db.Metadata()
class orders(db.model):
pass
如何将元对象传递给类,以便它自动生成表模式?
答案 0 :(得分:5)
那么你可以使用SQLAlchemy的自动加载功能,但我仍然没有想出如何使用来自flask-sqlalchemy的功能。如果您想要阅读它,请参阅以下教程:SQLAlchemy Connecting to pre-existing databases。 我发现的最佳解决方案是使用sqlautocode从数据库中的现有表生成SQLAlchemy模型。我知道如果SQLAlchemy自动处理这个问题会更好,但我无法从Flask找到一种方法。
以下是如何使用它:
sqlautocode mysql://<dbuser>:<pass>@localhost:3306/<dbname> -o alchemy_models.py
这将生成模型并将它们放在alchemy_models.py
文件中。我希望这有帮助
答案 1 :(得分:0)
您可以使用sqlacodegen生成sqlalchemy所需的类。
pip install sqlacodegen
sqlacodegen postgresql+psycopg2://username:password@host/database --outfile models.py
我遇到了基类和查询属性的问题。我收到的错误是:
AttributeError: type object 'PaymentType' has no attribute 'query'
我能够通过使用scoped_session使sqlacodegen类起作用。
session = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine))
Base.query = session.query_property()
print(PaymentType.query.all())