我有一个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)
答案 0 :(得分:0)
我知道这已经是几年了,但是我遇到了同样的问题,结果是我不在同一目录中。如果您没有从数据库所在的同一目录中运行代码,则它将无法读取它。我不是专家,但由于某种原因它不会出错,它只允许您运行所有内容,但无法从数据库中读取任何值