首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FetchAll的PyPyODBC模块中使用PyPyODBC?

如何在FetchAll的PyPyODBC模块中使用PyPyODBC?
EN

Stack Overflow用户
提问于 2014-03-04 18:47:46
回答 1查看 8.9K关注 0票数 2

我正在尝试使用PyPyODBC,特别是使用这个示例。但是,我对创建一个新表并不感兴趣,我只是想读取数据(它驻留在Server中的数据库/表中),并在Python中使用它。

除了下面的部分( for row in cur.fetchall():)之外,下面的代码工作得很好。

代码语言:javascript
复制
from __future__ import print_function
import pypyodbc
from  pandas import *
import pandas as pd
con = pypyodbc.connect(driver = '{SQL Server}', server = 'WIN-SAV35R5AKCQ',database ='V2.0.6_X12_837I')

cur = con.cursor()
cur.execute('''SELECT * FROM TS837_2400;''')
cur.commit()

for d in cur.description: 
    print (d[0], end=" ")

print('')

for row in cur.fetchall():
    for field in row: 
        print (field, end=" ")
    print ('')

cur.close()
con.close()

但是,我得到了这个错误。

代码语言:javascript
复制
---------------------------------------------------------------------------
Error                                     Traceback (most recent call last)
<ipython-input-70-c08d5a03056a> in <module>()
     14 print('')
     15 
---> 16 for row in cur.fetchall():
     17     for field in row:
     18         print (field, end=" ")

C:\Users\Administrator\Anaconda\lib\site-packages\pypyodbc.pyc in fetchall(self)
   1805         rows = []
   1806         while True:
-> 1807             row = self.fetchone()
   1808             if row is None:
   1809                 break

C:\Users\Administrator\Anaconda\lib\site-packages\pypyodbc.pyc in fetchone(self)
   1900                 return None
   1901             else:
-> 1902                 check_success(self, ret)
   1903 
   1904     def __next__(self):

C:\Users\Administrator\Anaconda\lib\site-packages\pypyodbc.pyc in check_success(ODBC_obj, ret)
    981     if ret not in (SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA):
    982         if isinstance(ODBC_obj, Cursor):
--> 983             ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
    984         elif isinstance(ODBC_obj, Connection):
    985             ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)

C:\Users\Administrator\Anaconda\lib\site-packages\pypyodbc.pyc in ctrl_err(ht, h, val_ret, ansi)
    959                 raise OperationalError(state,err_text)
    960             elif state[:2] in (raw_s('IM'),raw_s('HY')):
--> 961                 raise Error(state,err_text)
    962             else:
    963                 raise DatabaseError(state,err_text)

Error: (u'HY010', u'[HY010] [Microsoft][ODBC Driver Manager] Function sequence error')

问题:最终希望能够调查Python.How中的数据,这能做得到吗?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-04 19:45:06

删除cur.commit()行,它对SELECT不需要。

我能够用皮氏再现错误,所以我假设pypyodbc也会这样做。您应该能够将pyodbc实例应用到您的代码中,我认为它们比pypyodbc目前的产品更完整。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22180362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档