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