[英]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.