【发布时间】:2012-01-09 23:44:41
【问题描述】:
这不是一个问题,而是一个先发制人的答案。 (我从这个网站得到了很多帮助并想回馈。)
当我尝试使用 pymssql 通过 python 运行它时,我遇到了大量的 SQL 查询失败,但直接通过 MS SQL 时运行良好。 (例如,在我的例子中,我使用 MS SQL Server Management Studio 在 python 之外运行它。)
然后我终于发现了问题:pymssql不能处理临时表。至少不是我的版本,它仍然是 1.0.1。
作为证据,这是我的代码的 sn-p,稍作改动以保护任何 IP 问题:
conn = pymssql.connect(host=sqlServer, user=sqlID, password=sqlPwd, \
database=sqlDB)
cur = conn.cursor()
cur.execute(testQuery)
如果我用testQuery 定义如下调用,上面的代码失败(具体来说,不返回任何数据,如果你调用cur.fetchone(),则会吐出错误“pymssql.OperationalError: No data available.”):
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 中的搜索,但找不到有关特定问题的任何信息。我还查看了位于http://code.google.com/p/pymssql/wiki/FAQ 的 pymssql 文档和常见问题解答,并没有看到任何提及不允许使用临时表的内容。所以我想我会添加这个“问题”。
【问题讨论】: