ValueError(“索引185处不支持的格式字符'A'(0x41)”,)

时间:2016-05-20 16:59:55

标签: mysql formatting python-3.4 mysql-python

我正在尝试执行一个查询,该查询列出了我的数据库的某些值,这些值与我的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",)

如果你知道我怎么解决这个问题,我真的很感激。我是数据库的先驱。 提前致谢

1 个答案:

答案 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查询没有通配符(所以%%)也可以使用_等式测试。