2017-06-19 56 views
1

我的查询,如下面蟒蛇烧瓶发行的Python瓶

result = app._engine.execute ("select bookingid, DATE_FORMAT(bookingdate, '%Y-%m-%d'), DATE_FORMAT(pickupdate, '%Y-%m-%d'), consigneeid, fromcity from booking where consignerid = '{0}'".format(loginid)) 

,当我在MySQL Workbench中运行,并在格式返回日期YYYY-MM-DD,但是当我运行此查询工作在python瓶得到下面的错误

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute 
query = query % tuple([db.literal(item) for item in args])TypeError: not enough arguments for format string 

它正在寻找更多的参数,虽然在查询%是格式化,而不是传递参数。我曾尝试寻找原因,但找不到一个好的,我在这里做错了什么?

回答

1

当使用MySQL Connector for Python时,您应该转义字面%,这是因为Python使用百分号(%)作为字符串格式。

试试这个:

result = app._engine.execute ("select bookingid, DATE_FORMAT(bookingdate, '%%Y-%%m-%%d'), DATE_FORMAT(pickupdate, '%%Y-%%m-%%d'), consigneeid, fromcity from booking where consignerid = '{0}'".format(loginid)) 
+0

感谢Occasus您指出转义字符%,用反斜杠努力,你完全提供作品的查询,以使其在引导表渲染,我说“是bookingdate”,即DATE_FORMAT(bookingdate,'%% Y - %% m - %% d')作为bookingdate,休息都很好。 – deepesh