繁体   English   中英

Bottle和MySQLdb中Int,Decimal或Datetime类型的执行不起作用

[英]Execution of Int, Decimal or Datetime Types in Bottle and MySQLdb Not Working

在PythonAnywhere.com的Bottle中使用MySQLdb时遇到一个非常奇怪的错误

每当执行包含int,decimal或datetime类型的列时,执行都会引发500错误。 例如,从表Tools中,Manufacturer和sub_type都是varchars,因此此代码块可以完美地工作:

reservation_id = request.forms.get("reservation_id")
db = MySQLdb.connect("...")
c = db.cursor()
c.execute("""SELECT manufacturer, sub_type FROM Tool""")
row = c.fetchone()
return row

但是,请从该表中获取int类型的同一表,或从该表中获取int,十进制或日期时间类型的任何其他列:

reservation_id = request.forms.get("reservation_id")
db = MySQLdb.connect("...")
c = db.cursor()
c.execute("""SELECT tool_id FROM Tool""")
row = c.fetchone()
return row

并且Bottle引发严重错误:

运行WSGI应用程序SystemError时出错:返回了带有错误集的结果

在MySQL bash中,每个查询都能完美运行。 将相同的查询(仅int,十进制或datetime)放在execute()中,它将失败。

有没有类似的经历?

您是否要返回row作为WSGI响应? 如果是这样,那就是问题所在。 根据WSGI标准

当服务器调用该应用程序对象时,该应用程序对象必须返回一个可迭代的产生零个或多个字符串。

为了说明这一点,请尝试先将您的行转换为字符串,然后确认是否有帮助。 例如,

...  # your existing code
return [str(col) for col in row]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM