У меня есть очень простая схема базы данных «один ко многим» (у родителя может быть много детей, но у ребенка может быть только один родитель).Мои модели 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)
);
Есть ли способ генерировать схему базы данных в raw sql с использованием SQLAlchemy?Я знаю, что могу сгенерировать запрос в raw sql , но мне интересно, как создать исходную схему базы данных.
Кроме того, есть ли способ генерировать схему в зависимости отфактический тип базы данных (например, сырой sql будет выглядеть немного иначе для MySQL и PostgreSQL)?