1

我在以下 sqlite 语句中放置正确的 qoutes 时遇到问题,该语句将客户表的主键 customer id(c_id) 放入地点表的外键 c_id 中。

我可以通过取消嵌套代码来提取 c_id,并分别执行“从 fname =?的客户中选择 c_id”部分。但是我希望我的代码更简洁。

t = (fname,)
place = (postal_code , place_name)
cur.execute(""insert into place(postal_code ,place_name,c_id) values(?,?,("select c_id from customers where fname =?"),t)""",place)

引号全部不合适,感谢您的帮助以进行修复。

顺便说一句:这个问题与这个问题Insert Data Into Tables Linked by Foreign Key类似,我从中复制了嵌套的想法。

4

2 回答 2

0

我完全在这里猜测,但你有没有尝试过。

cur.execute("insert into place(postal_code ,place_name,c_id) values(?,?,(select c_id from customers where fname = ?))", (postal_code , place_name, fname))

编辑 看到这个问题插入...值(SELECT ... FROM ...)

INSERT INTO TableA (colA, colB, colC) SELECT ?, ?, (SELECT c_id FROM customers WHERE fname = ?)
于 2012-11-01T04:10:07.530 回答
0

这个问题的解决方法不是放适量的报价,而是用sqlite语句的形式。

一种解决方案是用三个值设计变量place,其中一个带有客户id(c_id)的外键

place = (postal_code , place , f_name) 

cur.execute("insert into place(postal_code ,place,f_name) values(?,?,(select c_id from customers where fname =?))",place)
于 2012-11-01T04:45:08.487 回答