从sql到sqlalchemy的转换

时间:2019-05-09 11:22:03

标签: python sqlalchemy flask-sqlalchemy

我正在尝试为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)

,我不知道该怎么做。当我做flask db 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)

0 个答案:

没有答案