我正在尝试使用flask_sqlalchemy
定义和创建我的模型。
如果我在一个脚本中全部完成,那么它将起作用:
all_in_one.py
from config import DevConfig
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object(DevConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = app.config.get("DB_URI")
db = SQLAlchemy(app)
class Members(db.Model):
id = db.Column(db.String, primary_key=True, nullable=False)
def main():
db.drop_all()
db.create_all()
if __name__ == "__main__":
main()
Members
表已创建。
如果我将此过程拆分为文件,则似乎无法获得db
对象来注册我的Members
模型并执行任何操作。
root
│-- config.py
│-- create.py
│-- database.py
│-- members.py
database.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
members.py
from database import db
class Members(db.Model):
id = db.Column(db.String, primary_key=True, nullable=False)
create.py
from database import db
from config import DevConfig
from flask import Flask
app = Flask(__name__)
app.config.from_object(DevConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = app.config.get("DB_URI")
def main():
db.init_app(app)
with app.app_context():
db.drop_all()
db.create_all()
if __name__ == "__main__":
main()
未创建Members
表。
答案 0 :(得分:2)
在import members
下添加db.init_app(app)
from database import db
from config import DevConfig
from flask import Flask
app = Flask(__name__)
app.config.from_object(DevConfig)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = app.config.get("DB_URI")
def main():
db.init_app(app)
import members
with app.app_context():
db.drop_all()
db.create_all()
if __name__ == "__main__":
main()