我有一个带有几个表的sqlite数据库,我想在一个表中插入xyz,使用sql alchemy创建表,并使用以下作为creat statment。
CREATE TABLE XYZ (
some_id FLOAT,
creat_date DATETIME,
first_name VARCHAR,
last_name VARCHAR,
xyz_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
FOREIGN KEY(some_id) REFERENCES some (some_id),
)
上表的模型我使用metadata_create_all(engine)创建了表,其中use_alter = True以删除循环依赖。
XYZ = Table("XYZ", metadata,
Column(
"some_id", Float, ForeignKey('some.some_id'), default=0),
crt_dt(),
Column("first_name", String),
Column("last_name", String),
Column("xyz_id", Integer, primary_key=True),
sqlite_autoincrement = True,
)
我在sqlite中检查了表是否正确创建。但是当我向xyz插入数据时,它说 FlushError:实例具有NULL标识密钥。如果这是自动生成的值,请检查数据库表是否允许生成新的主键值,以及映射的Column对象是否配置为期望这些生成的值。还要确保此flush()没有在不适当的时间发生,例如在load()事件中。 ''}
我尝试使用xyz_id = 1的值插入,令人惊讶的是它接受了值并填充了数据,但是当我没有给出任何值时,它抱怨自动增量值。 我将不胜感激任何帮助。