使用current_user的SQL查询不会过滤结果

时间:2015-10-07 17:30:29

标签: python flask

以下查询检索数据库中的每个预留,但我只想获取当前用户的预留。当我在mysql命令行中运行查询时,它可以工作。为什么我的应用程序无法正常使用?

from flaskext.mysql import MySQL
from flask.ext.login import LoginManager
from flask_login import current_user

...

db = MySQL()
db.init_app(app)

...

cur = db.connect().cursor()
cur.execute("SELECT ReservationID FROM Reservation WHERE user_name=" + "'" + current_user + "';")
reservation_instance = cur.fetchall()

1 个答案:

答案 0 :(得分:1)

current_userUser个实例。你不能只是将它添加到字符串中,你需要使用它的用户名(假设你调用了属性“username”)。

您目前对SQL注入攻击持开放态度。 从不尝试自己将参数插入查询字符串。 始终使用参数化查询,让驱动程序可以正确地构建,引用和转义查询。

cur.execute('SELECT ReservationID FROM Reservation WHERE user_name=?', [current_user.username])

占位符字符(我在示例中使用?)取决于驱动程序。考虑使用SQLAlchemy,它可以规范化这类事情,并且功能更强大。还有Flask-SQLAlchemy可以更轻松地与Flask集成。