簡體   English   中英

使用current_user的SQL查詢不會過濾結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM