2 回答
TA贡献1111条经验 获得超0个赞
我也有同样的困境。如果它很小或一次性,您可以在不真正使用它的情况下破解 Flask 应用程序对象,如下所示:
from flask_sqlalchemy import SQLAlchemy
throw_away_app = Flask(__name__)
db = SQLAlchemy(throw_away_app)
with self.throw_away_app.app_context():
(perform your db operation)
这对于脚本之类的简单事物相对有效。但是,如果您在多个项目之间共享一个模型并且您根本无法更改现有的 Flask 项目,那么不幸的是,这可能不是一个好的解决方案。
如果是这种情况,并且您根本无法更改现有代码库,那么创建一个新模型类并使用 vanilla SQLAlchemy 连接到现有数据库可能是有意义的。
顺便说一句,对于任何想知道如何在没有 Flask 的情况下获得 Flask-SQLAlchemy 的一些好处的未来程序员,请考虑:sqlalchemy-mixins。
TA贡献1804条经验 获得超8个赞
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String, Text, TIMESTAMP, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
# connect in memory sqlite database or you can connect your own database
engine = create_engine('sqlite:///:memory:', echo=True)
# create session and bind engine
Session = sessionmaker(bind=engine)
class Table_name(Base):
__tablename__ = 'table_name'
id = Column(Integer, primary_key=True)
field1 = Column(Integer, ForeignKey('table1.id'), nullable=False)
field2 = Column(Text, nullable=False)
field3 = Column(Integer, ForeignKey('table2.id'), nullable=False)
time = Column(TIMESTAMP, nullable=False)
table = Table_name(field1=1, fi....)
session.add(table)
现在你可以像往常一样使用你的 ORM,比如 flask-sqlalchemy 。
文档:https ://docs.sqlalchemy.org/en/13/orm/tutorial.html
添加回答
举报
