SQLAlchemy:如何使用声明性基础在现有数据库中创建新表?

时间:2017-10-14 20:11:01

标签: python sqlalchemy flask-sqlalchemy

我有一个包含两个实体的测试数据库:post和category,我使用声明式base来执行基础数据的操作,如下所示:

engine = create_engine("sqlite:///test.db")
Base = declarative_base()
Base.metadata.bind = engine


class Post(Base):
    __tablename__ = "post"

    post_id = Column('id', primary_key=True)
    title = Column('title')
  ...other attributes...

class Category(Base):
    __tablename__ = "category"

    category_id = Column('id', primary_key=True)
    description = Column('name')
  ...other attributes...

假设我想创建帖子和类别之间的关系(我的数据库中不存在),我该如何创建它?有什么想法吗?

EDIT1:

我会尝试更清楚:数据库已经存在于完成绑定的位置,以及post和category表。我想要的是通过代码在它们之间创建一个关系并将其写入数据库

1 个答案:

答案 0 :(得分:0)

create_all方法支持指定要创建的表:

Base.metadata.create_all(tables=[Post.__table__,])

结果:

$ sqlite3 test.db
sqlite> .tables
post