簡體   English   中英

使用SQLAlchemy生成數據庫架構

[英]Generate database schema using SQLAlchemy

我有一個非常簡單的一對多數據庫架構(一個父母可以有很多孩子,但是一個孩子只能有一個父母)。 我的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看起來會略有不同)?

如何-可以-I-GET-在創建表拖放表輸出作為一種串

from sqlalchemy import MetaData, Table, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.schema import CreateTable
import sqlalchemy
print(sqlalchemy.__version__)

Base = declarative_base()

class Parent(Base):
    __tablename__ = 'Parent'
    id = Column(Integer, primary_key=True)
    children = Column(String(255))

user = Table('users', MetaData(bind=None),
            Column('id', Integer(), primary_key=True, nullable=False),
            Column('name', String()),
            Column('fullname', String()),
            Column('password', String()), schema=None)

print(CreateTable(Parent.__table__))
print(CreateTable(user))

輸出:

1.3.0b1

CREATE TABLE "Parent" (
    id INTEGER NOT NULL, 
    children VARCHAR(255), 
    PRIMARY KEY (id)
)

CREATE TABLE users (
    id INTEGER NOT NULL, 
    name VARCHAR, 
    fullname VARCHAR, 
    password VARCHAR, 
    PRIMARY KEY (id)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM