How to create tables with sqlalchemy
Posted January 15, 2014on:
There are two ways to create tables with sqlalchemy.
1. create the tables yourself, examples are in their Expression Language tutorial. needless to say this means your schema is explict, and separate from the code, which means code changes won’t propagate themselves easily to a new database.
>>> from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey >>> metadata = MetaData() >>> users = Table('users', metadata, ... Column('id', Integer, primary_key=True), ... Column('name', String), ... Column('fullname', String), ... ) >>> addresses = Table('addresses', metadata, ... Column('id', Integer, primary_key=True), ... Column('user_id', None, ForeignKey('users.id')), ... Column('email_address', String, nullable=False) ... ) >>> metadata.create_all(engine)
2. if you already have code that defines the classes so that they are already interacting with the database, you can use the following steps. See this tutorial on ORM for details.
Base = declarative_base()
class definitions (they should inherit from Base)
engine = sqlalchemy.create_engine(“postgresql+psycopg2://user:pass@localhost:port/db”)
See more details on configuring the engine.
3. table reflection (you can directly export the table schemas from a database to a new one), haven’t found real examples yet.
This stackflow question (and answer) is useful. This one talks about how to create the database with sqlalchemy if the database isn’t there. Note if the database is not present your get_engine code will fail.