Python psycopg2 SELECT return None



我尝试在python脚本中使用psycog2。

我在db.py文件中有一个get_db()函数(我需要在sqlite和psql之间进行选择(:

def get_db():
if 'db' not in g:
info_db = getDatabaseType()
if info_db['type'] != 'pgsql': # If wrong type is setup, use sqlite by default
g.db = sqlite3.connect(
current_app.config['DATABASE'],
detect_types=sqlite3.PARSE_DECLTYPES
)
g.db.row_factory = sqlite3.Row
else:
conn = psycopg2.connect(
"dbname=" + info_db['db'] +
" user=" + info_db['user'] +
" password=" + info_db['pwd'])
conn.autocommit = True
g.db = conn.cursor()
return g.db

这是在auth.py文件(与db.py级别相同(中进行选择的代码:

def load_logged_in_user():
user_id = session.get('user_id')
if user_id is None:
g.user = None
else:
db = get_db()
tes = db.execute('SELECT * FROM users')
users = tes.fetchall()

我有以下错误:

AttributeError: 'NoneType' object has no attribute 'fetchall'

如果我在db.py文件中执行相同的命令,它就会工作。

有什么想法吗?

提前感谢

问题就在这里:

tes = db.execute('SELECT * FROM users')
users = tes.fetchall()

db.execute返回None,以分配给tes

你需要做:

db.execute('SELECT * FROM users')
users = db.fetchall()

光标执行命令,然后从光标中提取。

最新更新