我一直試圖在運行SQLAlchemy = 1.1.11,pyodbc = 4.0.17和pymssql = 2.1的Windows Python 2.7(Anaconda安裝)環境中診斷問題。 3。SQLAlchemy將無法正確連接,但pyodbc和pymssql將
pyodbc和pymssql連接都將成功連接並正確查詢表。然而,當我試圖通過SQLAlchemy的相同的連接和查詢或者使用ORM或直接使用SQL時,出現以下錯誤:
sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column '0'
我使用的連接字符串如下:
'mssql+pyodbc://:@CMPDSQL01:1433/CMP?driver=SQL+Server+Native+Client+10.0'
通過pyodbc的連接和簡單的查詢使用以下:
print "---- Testing pyodbc Directly"
cnxn = pyodbc.connect(
r'Trusted_Connection=yes;'
r'DRIVER={SQL Server Native Client 10.0};'
r'SERVER=CMPDSQL01;'
r'DATABASE=CMP;'
)
print cnxn
print "---- Complete ----"
print "---- Running Direct SQL Query on pyodbc Direct Connection"
cursor = cnxn.cursor()
cursor.execute('SELECT * FROM EPO_MODELS')
for r in cursor:
print r
print "---- Complete ----"
通過pymssql的連接和簡單的查詢使用以下:
print "---- Testing pymssql Directly"
cnxn = pymssql.connect(server='CMPDSQL01', port='1433', database='CMP')
print cnxn
print "---- Complete ----"
print "---- Running Direct SQL Query on pymssql Direct Connection"
cursor = cnxn.cursor()
cursor.execute('SELECT * FROM EPO_MODELS')
for r in cursor:
print r
print "---- Complete ----"
更令人困惑的是,SQLAlchemy連接用於工作,但現在不再有效。不幸的是,我不知道是什麼打破了它,因爲一個乾淨的開始安裝。
我不認爲EPO_MODELS對象模型會出現此錯誤,因爲即使是直接的SQL查詢也會以相同的方式失敗。然而,對於完整性EPO_MODELS對象模型是非常簡單的,看起來像下面這樣:
class EPO_MODELS(Base):
__tablename__ = 'EPO_MODELS'
ID = Column(Integer, primary_key=True, autoincrement=False)
MODELTYPE = Column(Integer, autoincrement=False)
MODELNAME = Column(NVARCHAR(255))
MEMO = Column(NVARCHAR(2000))
NEXTUNIQUEID = Column(Integer, autoincrement=False)
MODELSYNC = Column(Integer, autoincrement=False)
MODELSTATUS = Column(Integer, autoincrement=False)
AUDITUSERID = Column(Integer, autoincrement=False)
DATEALTERED = Column(DateTime)
CREATIONDATE = Column(DateTime)
直接SQLAlchemy的查詢看起來像使用上述連接字符串獲取會話後,執行以下操作:
print "---- Running Direct SQL Query Through SQLAlchemy Connection"
result = con.execute('SELECT * FROM EPO_MODELS')
for r in result:
print r
print "---- Complete ----"
非常非常感謝這裏發生的事情。我似乎無法找到脫節。提前致謝。