我正在尝试执行一个查询,该查询列出了我的数据库的某些值,这些值与我的html搜索表单的输入相匹配。我希望它进行搜索,即使一些表单输入是空输入。我使用的是Python 3.4,我的查询是这样的:
query=("select DISTINCT val1,val2,val3,val4 from tab1,tab2 WHERE tab1.val1=tab2.val1 AND onoma LIKE '%' AND epitheto LIKE '%' AND (val4 between % AND %)" )
data =(d1, d2, d3 ,d4)
c.execute("SET NAMES utf8")
c.execute(query,data)
我得到的错误是:
ValueError("unsupported format character 'A' (0x41) at index 185",)
如果你知道我怎么解决这个问题,我真的很感激。我是数据库的先驱。 提前致谢
答案 0 :(得分:0)
参数的占位符拼写为- (IBAction)loginButton:(id)sender {
if (!self.service.authorizer.canAuthorize) {
// Not yet authorized, request authorization by pushing the login UI onto the UI stack.
[self presentViewController:[self createAuthController] animated:YES completion:nil];
}
,而不是%s
:
%
请注意,您应不在占位符周围添加引号(将这些引号留给数据库驱动程序),对于query = """
select DISTINCT val1,val2,val3,val4 from tab1,tab2
WHERE tab1.val1=tab2.val1 AND onoma LIKE %s AND
epitheto LIKE %s AND
(val4 between %s AND %s)
"""
data = ('%{}%'.format(d1), '%{}%'.format(d2), d3 ,d4)
c.execute(query, data)
查询,您需要将通配符添加到参数值中。我在这里使用LIKE
在每个值之前和之后放置str.format()
通配符。 LIKE查询没有通配符(所以%
或%
)也可以使用_
等式测试。