首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向`pymssql`中的`cursor.execute`传递参数?

问如何向`pymssql`中的`cursor.execute`传递参数?
EN

Stack Overflow用户
提问于 2019-08-28 13:59:43
回答 2查看 2.6K关注 0票数 1

我正在通过pymssql库连接到sql server数据库。并且我正在尝试使用cursor.execute(sql, params)方法来执行查询。

代码语言:javascript
复制
sql = """
            SELECT
                MIN(myDate)
            FROM
                %s
        """

sql语句是在上面定义的。它只是从表中选择最小日期值。

当我运行下面的代码来传递参数时:

代码语言:javascript
复制
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注入。有没有办法将表名作为参数传递?

EN

回答 2

Stack Overflow用户

发布于 2019-08-28 14:02:08

尝尝这个

代码语言:javascript
复制
sql = 'SELECT MIN(myDate) FROM %s'
cursor.execute(sql , ['Daily'])
票数 0
EN

Stack Overflow用户

发布于 2019-08-28 14:52:11

您的查询可能包含\n。

用空格替换\n (' ')

尝尝这个,

代码语言:javascript
复制
sql = """
            SELECT
                MIN(myDate)
            FROM
                %s
        """
cursor.execute(sql.replace('\n',' '), ('Daily',))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57685930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档