Pyodbc SQL选择光标.执行复制结果

2024-06-28 19:03:41 发布

您现在位置:Python中文网/ 问答频道 /正文

 Records = Cursor.execute("SELECT cust_addr1, cust_addr2, cust_postcode, cust_telno_home, cust_email \
                           FROM tblcustomer, tblpet \
                           WHERE cust_surname = ? and tblpet.pet_deceased = ?" ,(SearchCriteria[0], "Y")).fetchall()

如果我很好地删除了tblpet,我可以运行这个查询,但是当我添加tblpet时,查询会运行,但是结果是重复的。所以我得到的不是5个结果,而是6300,但是所有的结果都是循环的。在

谢谢

编辑

我现在已经修复了这个问题,多亏了MureinikSiyual告诉我关于连接的信息。 然后我找到了这些

https://msdn.microsoft.com/en-us/library/bb243855(v=office.12).aspx

JOINing mdb tables with pyodbc

它工作了50%,但是我有一个好主意,进入access并进行查询,然后切换到SQL视图并复制它。效果很好,我离得太近了

回答

^{pr2}$

Tags: fromhomeexecuteemailwhereselectcursorpostcode
1条回答
网友
1楼 · 发布于 2024-06-28 19:03:41

当您像这里一样编写隐式联接时(即,from子句中有多个表),数据库将创建这些行的笛卡尔积。您需要添加一个条件来只匹配适当的行。E、 g.假设顾客有身份证,宠物有顾客的身份证:

SELECT cust_addr1, cust_addr2, cust_postcode, cust_telno_home, cust_email
FROM   tblcustomer, tblpet
WHERE  tblcustomer.id = tblpet.customer_id AND   Here!
       cust_surname = ? AND
       tblpet.pet_deceased = ?

或者更好的是,您可以使用显式join语法:

^{pr2}$

相关问题 更多 >