11

In sqlalchemy (0.8.2), drop_all() and create_all() both have a tables parameter, which can be a list of Table objects to drop or add.

In flask-sqlalchemy (1.0) these methods do not have this parameter.

What is the appropriate way to drop / create a subset of database tables, using flask-alchemy?

1 Answer 1

14

Flask-SQLAlchemy's create_all() method will use the Base's metadata to create the table, by calling SQLAlchemy's MetaData.create_all() method. This method allows for a list of table objects to specify. You will also need to provide it a "bind", which is basically the engine. You can retrieve that using the engine property of Flask-SQLAlchemy.

So, you should be able to do...

db = SQLAlchemy(app)

class MyTable(db.Model):
    ...

class MyOtherTable(db.Model):
    ...

db.metadata.create_all(db.engine, tables=[
    MyTable.__table__,
    ...
])

This assumes that you are using a single database. Otherwise you would need to do a create_all() call for each database using get_engine().

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.