因此,我目前正在将Python与SQL关联以提取客户信息。不幸的是,我在SQL方面遇到了一些错误。我正在尝试使用LIKE运算符和%通配符,但是由于Python不喜欢%,所以我不断收到错误消息。结果,它假装%s之间的变量不存在。这就是我的意思:
SELECT custnbr, firstname, middleint, lastname FROM lqppcusmst WHERE custnbr = ? AND firstname LIKE ?
现在,我只是对其进行测试,所以我仅使用客户编号和名字。我给它一个值:
remote_system_account_number = request.DATA['remote_system_account_number'] remote_system_first_name = request.DATA['remote_system_first_name']
由于我要写的是在数据库中搜索客户,因此有可能存在空白条目,所以我有这样的意思:
if remote_system_account_number != '': SQL_where += ' custnbr = ? ' parameters += "remote_system_account_number" if remote_system_first_name != '': SQL_where += ' AND firstname LIKE ? ' parameters += ", %remote_system_first_name%"
所以我认为这会起作用,但是没有。当我像这样执行它时:
database_cursor.execute(customer_information_SQLString + SQL_where, parameters)
我得到这个:
ProgrammingError: ('The SQL contains 2 parameter markers, but 1 parameters were supplied', 'HY000')
有人知道如何处理吗?
parameters不应为逗号分隔的字符串,而应为可枚举(列表或类似形式),且其值与SQL中占位符的数量匹配。例如:
parameters
parameters = [] if remote_system_account_number != '': SQL_where += ' custnbr = ? ' parameters.append("remote_system_account_number") if remote_system_first_name != '': SQL_where += ' AND firstname LIKE ? ' parameters.append("%remote_system_first_name%")