这个问题在这里已经有答案了:
sqlalchemy打印来自create()的原始sql(6个答案)
去年关门了。
我有一个非常简单的一对多数据库模式(父级可以有许多子级,但子级只能有一个父级)。我的sqlalchemy模型看起来是这样的:
from sqlalchemy import Table, Column, Integer, ForeignKey
from sqlalchemy.orm import relationship
from models import Base
class Parent(Base):
__tablename__ = 'Parent'
id = Column(Integer, primary_key=True)
children = relationship('Child', backref='parent')
class Child(Base):
__tablename__ = 'Child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('Parent.id'))
我可以使用以下命令在数据库中创建表:
engine = create_engine('mysql://localhost:3306/testdb')
Base.metadata.create_all(engine)
我很好奇创建这些表的原始sql是什么样子的。我可以想象它看起来像这样,但我想确定:
CREATE TABLE Parent (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
CREATE TABLE Child (
id INT NOT NULL AUTO_INCREMENT,
parent_id int,
PRIMARY KEY (id),
CONSTRAINT FK_Parent FOREIGN KEY (parent_id) REFERENCES Parent(id)
);
是否仍然可以使用sqlalchemy在原始sql中生成数据库模式?我知道我可以用原始sql生成查询,但我想知道如何生成初始数据库模式。
除此之外,根据实际的数据库类型(例如,对于mysql和postgresql,原始sql看起来略有不同),是否仍有生成模式的方法?
1条答案
按热度按时间scyqe7ek1#
how-can-i-get-the-create-table-drop-table-output-as-a-string方法
输出: