Преобразование из sql в sqlalchemy - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь создать классы для sqlalchemy, чтобы заставить sqlalchemy создавать базу данных Sometables. Вот код SQL:

CREATE table "Sometable" (
    id INTEGER UNIQUE NOT NULL PRIMARY KEY,
    name TEXT NOT NULL, 
    database_id INTEGER REFERENCES databases (id) ON DELETE CASCADE NOT NULL, 
    CONSTRAINT a UNIQUE (name, database_id) ON CONFLICT IGNORE
);

Я пробовал до сих пор:

class Sometable(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(140))
    database_id = db.Column(db.Integer, 
    db.ForeignKeyConstraint("Sometable.database_id", "databases.id"))


class Databases(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(140))

и

class Sometable(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    database_id = db.Column(db.Integer, db.ForeignKeyConstraint(["Sometable.database_id"], ["databases.id"]))


class Databases(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)

и

class Sometable(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    database_id = db.Column(db.Integer, db.ForeignKey("databases.id"))
    db.ForeignKeyConstraint(["database_id"], ["databases.id"])


class Databases(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)

и я не могу понять, как это сделать. Когда я делаю колбу дБ init; мигрировать; апгрейд получаю схему Sometable:

CREATE TABLE Sometable(
        id INTEGER NOT NULL,
        name VARCHAR,
        database_id INTEGER,
        PRIMARY KEY (id),
        FOREIGN KEY(database_id) REFERENCES databases (id)

@ Редактировать а также попробовал:

class Sometable(db.Model):
    id = db.Column(db.Integer, primary_key=True, unique=True)
    name = db.Column(db.String)
    database_id = db.Column(db.Integer, db.ForeignKey("databases.id"))
    db.ForeignKeyConstraint(["database_id"], ["databases.id"])
    db.UniqueConstraint("name", "database_id")


class Databases(db.Model):
    id = db.Column(db.Integer, primary_key=True, unique=True)
    name = db.Column(db.String)
...