首页 > 解决方案 > 如何将参数传递给`pymssql`中的`cursor.execute`?

问题描述

我正在通过pymssql库连接到 sql server db。我正在尝试使用该方法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注入。有没有办法将表名作为参数传递?

标签: pythonsql-serverpymssql

解决方案


尝试这个

sql = 'SELECT MIN(myDate) FROM %s'
cursor.execute(sql , ['Daily'])

推荐阅读