我正在尝试将我的mysql查询结果输出到JSON.我有序列化datetime.datetime字段的问题,所以我写了一个小函数来做到这一点:
def date_handler(obj):
if hasattr(obj, 'isoformat'):
return obj.isoformat()
else:
return obj
Run Code Online (Sandbox Code Playgroud)
然后在主代码中我刚刚运行:
products_json = []
for code in best_matching_codes:
cur = db.cursor()
query = "SELECT * FROM %s WHERE code LIKE '%s'" % (PRODUCTS_TABLE_NAME, product_code)
cur.execute(query)
columns = [desc[0] for desc in cur.description]
rows = cur.fetchall()
for row in rows:
products_json.append(dict((k,v) for k,v in zip(columns,row)))
return json.dumps(products_json, default = date_handler)
Run Code Online (Sandbox Code Playgroud)
但是,由于我写了date_handler函数,我得到"ValueError:检测到循环引用"
127.0.0.1 - - [10/Jan/2013 00:42:18] "GET /1/product?code=9571%2F702 HTTP/1.1" 500 -
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/flask/app.py", line 1701, …Run Code Online (Sandbox Code Playgroud) 我有一个分布在多个文件中的 Python 应用程序,其中有一个主应用程序(我们称之为 main.py)以及由 main.py 导入的几个模块(我们称之为 module_a.py 和 module_b.py)
跨所有这些文件连接到 MySQL 数据库的最有效方法是什么?
我应该创建一个单独的模块database.py,连接到该模块中的数据库,并将该模块导入到每个文件中,然后使用:
//database.py
db=MySQLdb.connect(host="localhost",user="xxx",passwd="yyy",db="zzz")
//main.py
import database
cur = database.db.cursor()
//module_a.py
import database
cur = database.db.cursor()
Run Code Online (Sandbox Code Playgroud)
或者我应该分别连接到每个文件中的数据库吗?
或者也许还有其他选择,甚至更适合此目的?
我正在尝试在服务器上部署基于烧瓶的应用程序,但是我遇到了问题。基本处理程序似乎工作正常,但是我连接到 MySQL 的处理程序给了我错误 500。
我使用 apache 和 mod_wsgi 在 Debian Linux 上以用户 Flask 的身份部署此应用程序。我以该用户身份登录并尝试在不同端口上手动运行该应用程序,然后它工作得很好。
我检查了烧瓶日志,这是我看到的错误:
[Sun Jan 13 14:33:27 2013] [error] [20130113-14:33PM] [susyapi] [ERROR] Exception on /1/product [GET]
[Sun Jan 13 14:33:27 2013] [error] Traceback (most recent call last):
[Sun Jan 13 14:33:27 2013] [error] File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1687, in wsgi_app
[Sun Jan 13 14:33:27 2013] [error] response = self.full_dispatch_request()
[Sun Jan 13 14:33:27 2013] [error] File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 1360, in full_dispatch_request
[Sun Jan 13 14:33:27 2013] [error] rv = …Run Code Online (Sandbox Code Playgroud)