我遇到了将正确的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类似,我从中复制了嵌套的概念。
答案 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)