执行(“选择...不返回存在的项目

时间:2018-03-22 20:22:17

标签: python ms-access

我有一个kivy应用程序,它使用.execute("Select命令对Access数据库中的项进行查询。 问题是并非所有匹配的LIKE记录都会显示用户搜索的内容。

我的查询代码是:

cursor.execute("SELECT `PART CODE`, PROGRAM, MATERIAL\
                       FROM PROGRAMS_DATABASE\
                       WHERE `PART CODE` LIKE ? or PROGRAM LIKE ?",
                       (('%{}%'.format(search_string)),
                        ('%{}%'.format(search_string))))

在查询之后,我使用for循环将结果输入字典。

for row in cursor.fetchall():
    # populate dictionary here
    # then send it for kivy to display

我的程序连接到数据库并运行良好但是,即使我知道它存在并且匹配搜索字符串,某个条目也不会显示。 如果我们知道要查找的PROGRAM值,则查找并显示它是没有问题的。

例如,如果用户搜索 ABCDE123 并且记录有4个变体,字符串以 -R-A,-R-B,-R-C,-R-D 之类的结尾 查询将返回前两个和最后一个但不返回第三个记录。 如果我们知道第3条记录的PROGRAM值是并在搜索字符串中使用该值,则查询将返回之前遗漏的第3条记录。

我很乐意为您提供更多我的python代码,但它是一个大型应用程序,其中的一些信息是专有的。 我怀疑的是我如何查询数据。我使用AccessDatabaseEngine_X64连接到Access数据库,允许非MS产品与MS产品通信。 在我的代码中,我使用pypyobdc连接到数据库

以这种方式与数据库进行通信是否存在问题? 查询错了吗?

我希望我提供的信息足以让您掌握我的概念。

0 个答案:

没有答案