简体   繁体   中英

Python - AttributeError: 'NoneType' object has no attribute 'cursor'

I have the following code:

import pyodbc

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

Its worked fine for years, but all of a sudden it has stopped working today with the following traceback:

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'

The code still works in Jupyter Notebook, but no longer works outside ie in Pycharm/IDLE

If I run in Pycharm:

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

I get:

none
none

If I do it in Jupyter Notebook, I get:

{'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']

I am losing the plot, as I rely on this code a lot for doing all my work, but nothing I am doing is fixing the issue ie reinstalling Python, pyodbc etc

conn is None, so you must have failed to acquire a connection. Presumably the notebook where this is working has "QueryBuilder" set up correctly, and wherever else you have tried to use this does not. I'm not familiar with that name specifically, but you may need to set up the data source, or you may need to install the appropriate ODBC driver.

You should be able to look at pyodbc.dataSources() and/or pyodbc.drivers() to get more details about what data sources are configured and what drivers are installed, and see what the difference is between your systems.

惊讶没有人注意到这一点,但似乎Python 3.6和pyodbc存在问题...我已经回到3.5并且它工作正常。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM