[英]SQL query using current_user doesn't filter results
以下查詢檢索數據庫中的每個保留,但是我只想獲取當前用戶所做的保留。 當我在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()
current_user
是一個User
實例。 您不能只將它添加到字符串中,而是需要使用它的用戶名(假設您將其稱為“用戶名”屬性)。
您目前可以接受SQL注入攻擊。 切勿嘗試自己將參數插入查詢字符串。 始終使用參數化查詢,這使驅動程序可以正確地進行構建,引用和轉義查詢的工作。
cur.execute('SELECT ReservationID FROM Reservation WHERE user_name=?', [current_user.username])
占位符(在示例中使用?
)取決於驅動程序。 考慮使用SQLAlchemy ,它可以規范這種事情並且功能更強大。 Flask-SQLAlchemy
也使與Flask的集成變得更加容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.