嵌套插入中的反转逗号和python中sqlite的select子句

时间:2012-11-01 04:04:10

标签: python sqlite

我遇到了将正确的qoutes放在以下sqlite语句中的问题,该语句将客户ID(c_id)(customers表的主键)放入place表的外键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类似,我从中复制了嵌套的概念。

2 个答案:

答案 0 :(得分: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))

修改 请参阅此问题Insert into ... values ( SELECT ... FROM ... )

INSERT INTO TableA (colA, colB, colC) SELECT ?, ?, (SELECT c_id FROM customers WHERE fname = ?)

答案 1 :(得分:0)

这个问题的解决方案不在于使用sqlite语句的形式进行适当的引用。

一种解决方案是使用三个值设计变量位置,其中一个值使用客户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)