我想知道如何将白色的单词作为变量放在SQL查询中(我使用PostGRESQL)
data = "something with white space"
choice = "DESC"
limit = 10
def rDB(sql_request):
with connection.cursor() as cursor:
cursor.execute(sql_request)
row = cursor.fetchall()
return row
queryWithFormat(data, choice, limit):
return('''
SELECT col1, SUM(col2) as nb
FROM Table
WHERE col1 = {d}
GROUP BY col1
ORDER BY nb {c}
LIMIT {l}
'''.format(d=data, c=choice, l=limit)
rDB(queryWithFormat(data, choice, limit))
django.db.utils.ProgrammingError: ERROR: syntax error on or near 'with'
LINE 8: WHERE col1 = something with white ...
-------------------------------^
1条答案
按热度按时间ifsvaxew1#
最好的方法是根本不使用Python的原生字符串格式!相反,你应该创建一个参数化查询。
我认为,通过引用变量
col1 = '{d}'
可以使代码正常工作,但我告诉你这只是为了提供信息,你不应该这样做。这是一个安全风险。最佳实践,请参阅文档的这一节。除了Django之外(不是我的专业领域...),看起来您使用SQLAlchemy来执行查询。这个库有自己的语法和参数绑定方法,您可以如下实现:
我认为使用这种方法处理包含空格的变量不会有任何问题,而且它要安全得多。