SQL查询在交互式python控制台中工作,而不是在脚本中

时间:2014-11-25 13:26:17

标签: python sql sql-server sql-server-2005

我有一个python脚本,它从文件中读取表/值并查询某些内容..

我已经在Microsoft SQL Server Management Studio中测试了查询,然后是交互式python控制台..这两种方式的查询都能正常运行。

现在当我在我的脚本中有查询时,它会毫无错误地执行,但不起作用。

这是我正在做的事情(the query is from database administrators stackexchange):

#source table and destination table
src = 'TableA'
dst = 'TableB'

try:
    con.execute_query('SELECT COUNT(*) FROM '+str(src))
    for row in con:
        print(row)
    print('SELECT * FROM '+str(src)+'; WITH cte AS (SELECT *, row_number() OVER (PARTITION BY val1, val2 ORDER BY val1, val2 ) AS Picker FROM '+str(src)+') DELETE cte WHERE Picker > 1')
    con.execute_query('SELECT * FROM '+str(src)+'; WITH cte AS (SELECT *, row_number() OVER (PARTITION BY val1, val2 ORDER BY val1, val2 ) AS Picker FROM '+str(src)+') DELETE cte WHERE Picker > 1')
    con.execute_query('SELECT COUNT(*) FROM '+str(src))
    for row in con:
        print(row)
except Exception as e:
    print("SQL QUERY FAILED. Error:\n" + str(e))
    sys.exit(4)

查询之前和之后的print确保它是否有效(也在管理界面中检查)。但它们确实显示了正确的条目数。 如果我现在将相同的东西(在同一台机器上,相同的python版本)复制/粘贴到它可以工作的交互式python终端上。

我很困惑......并且生气了。

有人可以告诉我为什么这会在剧本中起作用,但在外面呢?

(使用Microsoft SQL Server Enterprise Edition v9.00.3042.00,即SQL Server 2005 Service Pack 2)

1 个答案:

答案 0 :(得分:0)

我知道这已经是几年了,但是我遇到了同样的问题,结果是我不在同一目录中。如果您没有从数据库所在的同一目录中运行代码,则它将无法读取它。我不是专家,但由于某种原因它不会出错,它只允许您运行所有内容,但无法从数据库中读取任何值