pypyodbc错误无效的临时表名称



接收错误 pypyodbc.programmingerror :('42S02'," [42S02] [Microsoft] [ODBC SQL Server driver] [SQL Server] [SQL Server]。")试图查询临时表格时。我的实际查询更为复杂,但这是获得相同结果的沸腾版本:

c.execute("""
    SELECT ECR_ID, RespondentID, ? AS DestinationID, 
        TEIQuestionID, DateSubmitted
    INTO #responses_to_dedupe
    FROM ETLTEIConsumerResponses
    WHERE DoNotProcess IS NULL;
    """, [source['destinationid']])
c.execute("""
    SELECT *
    FROM #responses_to_dedupe;
    """)

(请注意,在错误消息之前的追溯显示在上述代码块的最后一行上发生的犯罪 - ")创建表格很好。)

在同一机器/环境上的生产脚本中,我已经做了完全相同的事情,而没有错误,甚至在此脚本中更早创建另一个临时表,并且没有发病率访问它。与这两种情况的唯一区别在于,临时表是使用骆驼盒命名的 - 我所有的情况下的情况下都命名为下划线。但是,如果我将表名的名称更改为#ResponSestoDedupe。

,仍然会得到相同的结果。

我还尝试了两者之间的c.mommit()语句,但结果相同。

@user3469050的评论是正确的。您应该能够将两个语句放入一个执行语句

c.execute("""
    WITH responses_to_dedupe_cte
AS
(
    SELECT ECR_ID, RespondentID, ? AS DestinationID, 
        TEIQuestionID, DateSubmitted
    FROM ETLTEIConsumerResponses
    WHERE DoNotProcess IS NULL
) 
SELECT *    FROM responses_to_dedupe_cte
""", [source['destinationid']])

否则,您可以使用全局临时表,但我通常会回避。

##responses_to_dedupe

最新更新