2014-07-08 2 views
1

반환 된 행에서 행 삽입을 실행하려고합니다. SQL Server에서 컴파일 된 sql을 직접 테스트했는데 쿼리가 올바르게 작동하고 올바르게 행을 반환합니다.sqlalchemy 및 pyodbc를 사용하여 MS SQL Server에서 반환 된 행을 가져 오는 중

문제는 쿼리에서 반환 된 행을 가져올 수 없습니다. 여기에 내 코드가 있고 Windows에서 pyodbc 드라이버를 사용하고 있습니다.

sql = """ 
    INSERT INTO mytable (id, name) 
    OUTPUT Inserted.id, Inserted.name 
    VALUES (...) 
    """ 
result = db.execute(sql).fetchall() 

나는 오류 얻고있다 :

ERROR: Failed to save events: (Error) ('HY010', '[HY010] [Microsoft][ODBC SQL Server Driver]Function sequence error (0) (SQLFetch)') None None 
Traceback (most recent call last): 
    File "...\site-packages\sqlalchemy\engine\result.py", line 782, in fetchall 
    l = self.process_rows(self._fetchall_impl()) 
    File "...\site-packages\sqlalchemy\engine\result.py", line 749, in _fetchall_impl 
    return self.cursor.fetchall() 
pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC SQL Server Driver]Function sequence error (0) (SQLFetch)') 

어떤 생각을? 미리 감사드립니다!

+2

sqlalchemy를 사용하지 않고 SQL Server Native Client 11.0 및 pyodbc 3.0.7을 사용하여 Windows x64에서 재현 할 수 없습니다. sqlalchemy가 혼합에서 제거되면 비슷한 동작을 보입니까? – Bryan

답변

-1

쿼리를 실행하지 않습니다. 결과를 반환해서는 안되는 데이터베이스에 작성 중입니다. 대신 다음을 시도하십시오.

# assuming db is your cursor 
db.execute(sql) # inserts the data 
result = db.execute('SELECT * FROM mytable').fetchall() 
+1

INSERT 문에 OUTPUT 절이 포함되어 있으므로 실제로 결과를 반환 할 것으로 예상됩니다. –