我在一個視圖中有這個代碼片段:
time_from = datetime.strptime(req.POST['time_from'], "%Y-%m-%d %H:%M:%S.%f")
with connections["mssql_database"].cursor() as cursor:
sql_statement = "EXEC SaveActivity @TimeFrom='%s'" % (time_from)
print(sql_statement)
cursor.execute(sql_statement)
它列印以下SQL陳述句:
EXEC SaveActivity @TimeFrom='2021-12-01 08:34:54'
微秒丟失。它們是零,但我需要在資料庫中使用它們。我該如何糾正?
uj5u.com熱心網友回復:
不要執行字串格式化。將資料作為引數傳遞。通過使用字串格式,它將使用str(…),這適用于不太精確的日期時間。利用:
with connections["mssql_database"].cursor() as cursor:
sql_statement = "EXEC SaveActivity @TimeFrom='%s'"
cursor.execute(sql_statement, (time_from,))
在字串插值上使用引數不僅可以更好地防止資料丟失,還可以防止 SQL 注入,例如通過字串,SQL 查詢將修改或泄漏資料庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389612.html
標籤:Python 姜戈 约会时间 数据库 django 数据库
上一篇:來自Abstractbaseuser的Django完整性錯誤
下一篇:我運行命令django-adminstartprojectdr它顯示zsh:commandnotfound:django-admin?
