Это не вопрос, так как упреждающий ответ. (Я получил большую помощь с этого сайта & хотел вернуть.)pymssql (модуль python) не может использовать временные таблицы
Я боролся с большим количеством SQL-запросов, которые терпели неудачу, когда я пытался запустить его через python с помощью pymssql, но будет работать нормально, когда напрямую через 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
, и ничего не заметил, что временные таблицы не разрешены. Поэтому я подумал, что добавлю этот «вопрос».
Привет @ gord-thompson, спасибо за обновление! Я оставлю свой старый ответ, просто b/c у него есть более подробные сведения, но я теперь принял ваш в качестве официального ответа. –