我有一个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连接到数据库
以这种方式与数据库进行通信是否存在问题? 查询错了吗?
我希望我提供的信息足以让您掌握我的概念。