【发布时间】:2013-09-10 11:09:14
【问题描述】:
我有 2 个 py 文件。 database.py 和 myapp.py。从myapp.py,我想调用database.py 来创建连接,并执行mysql 查询,但我不希望关闭与数据库的连接,因为我需要重用它。这是我的代码。
谁能给我一些建议?
database.py
import mysql.connector
from flask import g
def connect_db():
return mysql.connector.connect(user='root', password='password', database='test')
def get_db():
db = getattr(g, '_database', None)
if db is None:
#db = g._database = connect_to_database()
db = g._database = connect_db()
return db
def query_db(query, args=(), one=False):
cur = get_db().execute(query, args)
rv = cur.fetchall()
cur.close()
return (rv[0] if rv else None) if one else rv
myapp.py
from flask import g
from database import connect_db, query_db
for user in query_db('select * from users'):
print(user['userid'], 'has the password', user['password'])
这是完整的跟踪
Traceback (most recent call last):
File "test.py", line 4, in <module>
for user in query_db('select * from users'):
File "/root/projects/test2/database.py", line 15, in query_db
cur = get_db().execute(query, args)
File "/root/projects/test2/database.py", line 8, in get_db
db = getattr(g, '_database', None)
File "/opt/python3/lib/python3.3/site-packages/werkzeug/local.py", line 338, in __getattr__
return getattr(self._get_current_object(), name)
File "/opt/python3/lib/python3.3/site-packages/werkzeug/local.py", line 297, in _get_current_object
return self.__local()
File "/opt/python3/lib/python3.3/site-packages/flask/globals.py", line 27, in _lookup_app_object
raise RuntimeError('working outside of application context')
RuntimeError: working outside of application context
【问题讨论】:
-
您从您似乎不理解的代码中复制/粘贴了很多内容,并导致您出现这些错误。可能你应该慢慢read again flask doc 并尝试首先使用 SQLite,一旦没问题就切换到 MySQL
-
嗨...你能帮忙再看看这段代码吗?
标签: python mysql database mysql-connector connection