FlushError:Instance <xyz at =“”0xc971bac =“”>具有NULL标识密钥。无法在sqlalchemy中插入?</xyz>

时间:2014-07-09 07:15:58

标签: database sqlite sqlalchemy sql-insert

我有一个带有几个表的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的值插入,令人惊讶的是它接受了值并填充了数据,但是当我没有给出任何值时,它抱怨自动增量值。 我将不胜感激任何帮助。

0 个答案:

没有答案