我有2个主键的表,其中第二个主键也是外键。当我尝试填充数据库时,我将得到“NOT NULL约束失败:items.id1”错误。填充时,我将始终为id2提供已知的id。那么如何让sqlalchemy自动增加id1?
class items(Base):
__tablename__ = 'items'
id1 = Column(BIGINT(unsigned=True).with_variant(Integer, "sqlite"), primary_key=True,)
#location id
id2 = Column(Integer, ForeignKey('table2.id'), primary_key=True)
id1和id2的组合必须始终是唯一的,并且这些组合用于识别项目。 id1是不够的,因为数据库可以位于多个位置,并且表是不时同步的。
我已经尝试过这个解决方案,但它已经过时了,不再适用了:How to insert a row with autoincrement id in a multi-primary-key table?
编辑: 解决此问题的方法是使用Postgres DB。 SQLite很简单但是很蠢。
答案 0 :(得分:1)
如果您使用的是sqlite:
foreach ( $arr1 as $key1 => $entry1 ) {
foreach ( $arr2 as $key2 => $entry2 ) {
if ($entry1 ["animal"] == $entry2 ["title"]) {
$arr1 [$key1] ["name"] = $entry2 ["name"];
}
}
}
如果您使用的是mysql,那么简单的自动增量将起作用:
$arr1 = array (
array (
"animal" => "cat",
"color" => "grey"
),
array (
"animal" => "dog",
"color" => "black",
"name" => "Barney"
),
array (
"animal" => "mouse",
"color" => "white",
"name" => "Georgie"
)
);
P.S。:首先删除表格,然后重试。