Reputation: 179
I am trying to define and create my models with flask_sqlalchemy
.
If I do it all in one script, it works:
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()
The Members
table is created.
If I split this process into files, I can't seem to get the db
object to register my Members
model and do anything.
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()
The Members
table does not get created.
Upvotes: 1
Views: 1276
Reputation: 346
add import members
below 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()
Upvotes: 2