Python 炼金术:可以';t从用户数据库查询
我正在尝试在我的Flask应用程序上创建一个端点,该端点将显示所有用户信息(我知道这是不安全的,用于调试) 我已使用以下代码创建了路线:Python 炼金术:可以';t从用户数据库查询,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我正在尝试在我的Flask应用程序上创建一个端点,该端点将显示所有用户信息(我知道这是不安全的,用于调试) 我已使用以下代码创建了路线: @main_bp.route('/users', methods=['GET']) @login_required def userInfo(): from .models import User q = User.query.all() return str(q) 这将返回[],而我知道数据库中有用户。此外,在选择单个记录时,我可以
@main_bp.route('/users', methods=['GET'])
@login_required
def userInfo():
from .models import User
q = User.query.all()
return str(q)
这将返回[]
,而我知道数据库中有用户。此外,在选择单个记录时,我可以按如下方式获取用户名:
def userInfo():
from .models import User
q = User.query.first()
return str(q.username)
我正在使用SQLite3,但计划很快转移到PostgreSQL,因此如果问题出在SQLite内部,理想的解决方案是只连接到PG数据库。这肯定是一个奇怪的错误。尝试通过q循环并添加名称以进行双重检查,如下所示:
@main_bp.route('/users', methods=['GET'])
@login_required
def userInfo():
from .models import User
users = User.query.all()
result = ''
for u in users:
result += str(u.username)
return result
看看有没有什么进展。你的代码对我有用。我在sqlalchemy中也有一个“用户”,如果我复制了你的代码,我只需更改应用程序的名称,它就可以工作:
@app.route('/users', methods=['GET'])
@login_required
def userInfo():
from .models import User
q = User.query.all()
return str(q)
如果您确定数据库中有用户,可能没有执行此代码?奇怪的事情:冗余路由?你怎么看它返回的是
[]
?@thebjorn在第一个代码片段中,我直接返回响应的str()
。很可能我只是没有以正确的方式访问数据。当然,但是您正在查看呈现的html吗?(将包含“[]”
,其中尖括号将被html吞没…)。str([v.username for v in q])
呢?@thebjorn不,我正在查看直接响应,但我可以通过您的第二个命令访问它。但这意味着我必须手动映射所有要显示的字段,我更希望它动态返回所有字段。不,它显示已返回一个用户
对象列表,但是这些对象没有一个\u str\u
或\u repr\u
使它们在您看到它们的地方可见。