我正在通过pymssql库连接到sql server数据库。并且我正在尝试使用cursor.execute(sql, params)方法来执行查询。
sql = """
SELECT
MIN(myDate)
FROM
%s
"""sql语句是在上面定义的。它只是从表中选择最小日期值。
当我运行下面的代码来传递参数时:
cursor.execute(sql, 'Daily')我得到了这个错误,pymssql.ProgrammingError: (102, b"Incorrect syntax near 'Daily'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")。
我想知道应该如何将参数传递给sql语句?
经过一些调试后,我发现这个问题与表名有关。看起来我不能把表名放在参数里。我不想集中sql字符串的原因是为了避免sql注入。有没有办法将表名作为参数传递?
发布于 2019-08-28 14:02:08
尝尝这个
sql = 'SELECT MIN(myDate) FROM %s'
cursor.execute(sql , ['Daily'])发布于 2019-08-28 14:52:11
您的查询可能包含\n。
用空格替换\n (' ')
尝尝这个,
sql = """
SELECT
MIN(myDate)
FROM
%s
"""
cursor.execute(sql.replace('\n',' '), ('Daily',))https://stackoverflow.com/questions/57685930
复制相似问题