Python-AttributeError:“NoneType”对象没有属性“cursor”

2024-09-25 10:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

import pyodbc

conn = pyodbc.connect('DSN=QueryBuilder')
cursor = conn.cursor()
stringA = "SELECT GrantInformation.Call FROM GrantInformation"
cursor.execute(stringA)
rows = cursor.fetchall()

几年来,它工作得很好,但突然间,它停止了今天的工作,其回溯如下:

Traceback (most recent call last):
  File "C:/Users/nicholas/Desktop/test.py", line 6, in <module>
    cursor = conn.cursor()
AttributeError: 'NoneType' object has no attribute 'cursor'

代码仍然在Jupyter笔记本中工作,但不再在外部工作,即在Pycharm/IDLE中工作

如果我在Pycharm跑步:

print(pyodbc.dataSources())
print(pyodbc.drivers())

我得到:

none
none

如果我在Jupyter笔记本上这么做,我会得到:

{'Visio Database Samples': 'Microsoft Access Driver (*.mdb, *.accdb)', 'dBASE Files': 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)', 'Excel Files': 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'MS Access Database': 'Microsoft Access Driver (*.mdb, *.accdb)', 'QueryBuilder': 'SQL Server', 'QueryBuilder_Beta': 'SQL Server', 'MIDAS': 'SQL Server', 'Querybuilder_YearEnd': 'SQL Server', 'ResearchFish': 'SQL Server', 'ESRCContacts': 'SQL Server', 'ESRCContactsDEV': 'SQL Server', 'Sample Amazon Redshift DSN': 'Amazon Redshift (x64)'}

['SQL Server', 'SQL Server Native Client 10.0', 'Amazon Redshift (x64)', 'SQL Server Native Client 11.0', 'PostgreSQL ANSI(x64)', 'PostgreSQL Unicode(x64)', 'ODBC Driver 11 for SQL Server', 'ODBC Driver 13 for SQL Server']

我正在失去情节,因为我依赖这段代码来完成我的所有工作,但我所做的一切都没有解决问题,即重新安装Python、pyodbc等


Tags: 代码amazonredshiftsqlaccessserverdriverconn
2条回答

很惊讶没有人注意到这一点,但是看起来Python3.6和pyodbc有问题。。。我已经回到3.5了,一切正常。

conn为None,因此您必须未能获取连接。很可能这个工作的笔记本已经正确地设置了“QueryBuilder”,而在其他任何地方您尝试使用它都没有。我不太熟悉这个名称,但您可能需要设置数据源,或者可能需要安装适当的ODBC驱动程序。

您应该能够查看pyodbc.dataSources()和/或pyodbc.drivers(),以获得有关配置了哪些数据源和安装了哪些驱动程序的详细信息,并了解系统之间的区别。

相关问题 更多 >