这不是一个问题,而是一个先发制人的答案。(我从这个网站得到了很多帮助并想回馈。)
当我尝试使用 pymssql 通过 python 运行它时,我遇到了大量的 SQL 查询失败,但直接通过 MS SQL 时运行良好。(例如,在我的例子中,我使用 MS SQL Server Management Studio 在 python 之外运行它。)
然后我终于发现了问题:pymssql不能处理临时表。至少不是我的版本,它仍然是 1.0.1。
作为证明,这是我的代码片段,稍作改动以保护任何 IP 问题:
conn = pymssql.connect(host=sqlServer, user=sqlID, password=sqlPwd, \
database=sqlDB)
cur = conn.cursor()
cur.execute(testQuery)
上面的代码失败(具体来说,不返回任何数据,pymssql.OperationalError: No data available.
如果你调用它会吐出错误“” cur.fetchone()
),如果我调用它的testQuery
定义如下:
testQuery = """
CREATE TABLE #TEST (
[sample_id] varchar (256)
,[blah] varchar (256) )
INSERT INTO #TEST
SELECT DISTINCT
[sample_id]
,[blah]
FROM [myTableOI]
WHERE [Shipment Type] in ('test')
SELECT * FROM #TEST
"""
但是,如果testQuery
定义如下,它可以正常工作。
testQuery = """
SELECT DISTINCT
[sample_id]
,[blah]
FROM [myTableOI]
WHERE [Shipment Type] in ('test')
"""
我进行了 Google 搜索以及 Stack Overflow 中的搜索,但找不到有关特定问题的任何信息。我还查看了位于 的 pymssql 文档和常见问题解答, http://code.google.com/p/pymssql/wiki/FAQ
但没有看到任何提及不允许使用临时表的内容。所以我想我会添加这个“问题”。