我在SQLite中有此数据库架构
CREATE TABLE cliente(
id INTEGER PRIMARY KEY AUTOINCREMENT,
primeiro_nome TEXT,
ultimo_nome TEXT,
email TEXT
);
CREATE TABLE pedido(
id INTEGER PRIMARY KEY AUTOINCREMENT,
data TEXT,
status TEXT,
id_cliente INTEGER,
valor REAL,
FOREIGN KEY(id_cliente) REFERENCES cliente(id)
);
如上所述,pedido.id
和cliente.id
之间存在一个关键约束。因此,在SQLiteStudio中,当我尝试将行添加到pedido
而又不感到任何cliente.id
对应的情况下,效果很好。实际上,我的表cliente
是空的,因此,任何INSERT INTO pedido
都不起作用。
INSERT INTO pedido (
data,
status,
id_cliente,
valor
)
VALUES (
'22/01/1991',
'ok',
'50',
200
);
INSERT INTO pedido (
data,
status,
id_cliente,
valor
)
VALUES (
'22/01/1991',
'ok',
'50',
200
);
INSERT INTO pedido (
data,
status,
id_cliente,
valor
)
VALUES (
'22/01/1991',
'ok',
'50',
200
);
但是当我使用python在sqlite3中执行相同的查询时,它起作用了,应该避免!
def cadastra_pedido(conn: str, pedido: tuple):
"""Cadastra um novo pedido no bando de dados
Args:
conn (str): Conexão com o banco
pedido (tuple): Tupla contendo as informações do pedido abaixo:
data, status, id_cliente, valor
"""
sql = """INSERT INTO pedido
(data, status, id_cliente, valor)
VALUES (?,?,?,?)"""
cursor = conn.cursor()
cursor.execute(sql, pedido)
conn.commit()
conn.close()
conexao = conecta_banco_dados()
cadastra_pedido(conn=conexao, pedido=("22/01/1991", "Ok", 50, 25.31)) # This line was suppose to give me an error of key constraint, and it does not!
为什么会发生这种情况,我该如何解决?