With PYODBC sql 语句中的语句

With statement in PYODBC sql statement

如果我在 SQL 语句中使用 With 子句,我将无法使用 pyodbc 执行 SQL 语句。

这个有效:

import pyodbc

cnxn = pyodbc.connect('DSN=database;PWD=password' )
cursor = cnxn.cursor()

sql = """
    SELECT top 10 *                                 
    FROM    table
    """
qnnum = pd.read_sql(sql, cnxn)

这不起作用:

import pyodbc

cnxn = pyodbc.connect('DSN=database;PWD=password' )
cursor = cnxn.cursor()

sql = """
    With A as(SELECT top 10 *                                   
    FROM    table)
    select * from A
    """
qnnum = pd.read_sql(sql, cnxn)

我能够通过简化格式并从原始代码中删除注释来解决问题。

我已经在 Teradata( 15.10.07.37) 上使用 pyodbc(Python 3.7) 测试了 WITH 子句并且它有效。

在以下形式的查询字符串中也支持注释。

/*评论1 */

希望对您有所帮助。