我正在尝试使用以下代码查询数据库:
def check_entry(self, contest_id, number):
print("Contest id: {0}, Number: {1}".format(contest_id, number))
self._db_cursor.execute("""SELECT * FROM Entry WHERE ContestID LIKE ? AND Number Like ?""",
(contest_id, number))
row = self._db_cursor.fetchone()
if row:
return row
else:
return None
这一直在努力,但我在代码中改变了看似无关的东西,现在我收到了这个错误:
pypyodbc.ProgrammingError: (u'42000', u'[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Argument data type image is invalid for argument 2 of like function.')
错误消息很简单,但数据类型图像中没有任何内容应该在此函数附近。最初我传递的是一个附有图像数据的对象。我在代码中设置了一个断点,并验证了对象上的contest_id和number属性是正确的数据类型。它们是,但为了安全起见,我将它们单独传递(未连接到对象),并将它们打印到控制台。当错误发生时(或永远),数据类型图像都不是,这就是为什么我完全迷失了如何解决它。有谁知道这可能的原因?
编辑:我更新了以下内容:
self._db_cursor.execute("""SELECT * FROM Entry WHERE ContestID LIKE ? AND Number Like ?""",
(int(contest_id), int(number)))
并且错误仍然存在。图像数据传递给此的概率接近0%。即使这样,确实存在的图像数据也是varbinary(max),因为不推荐使用image数据类型。