Python 使用当前用户不使用的SQL查询';t筛选结果

Python 使用当前用户不使用的SQL查询';t筛选结果,python,flask,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().curs

下面的查询检索数据库中的每个预订,但我只想获取当前用户所做的预订。当我在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()

当前用户
是一个
用户
实例。您不能只将它添加到字符串中,您需要使用它的用户名(假设您将该属性称为“username”)

您当前面临SQL注入攻击从不尝试自己将参数插入查询字符串中始终使用参数化查询,这使驱动程序能够正确地构建、引用和转义查询

cur.execute('SELECT ReservationID FROM Reservation WHERE user_name=?', [current_user.username])
占位符字符(我在示例中使用了
)取决于驱动程序。考虑使用,它使这类事物正常化,并且更强大。还有一种方法可以使与Flask的集成更容易。

您应该避免sql注入。尝试在查询之前打印出当前用户,以确保其正确无误,并且没有空格或任何内容。如果这不起作用,模拟应用程序上下文并运行该查询