Python SQLAchemy永远无法在行中找到指定的列

Python SQLAchemy永远无法在行中找到指定的列,python,python-3.x,sqlalchemy,sql-server-2000,pypyodbc,Python,Python 3.x,Sqlalchemy,Sql Server 2000,Pypyodbc,我不熟悉SQLAlchemy(但不是一般的ORM),并且遇到了一个我实际上无法做任何有用的事情的问题。我所能做的就是对我的查询进行硬编码,这就是我想要做的 这正是我想要做的(请参阅Python注释,了解哪些是有效的,哪些是无效的- from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base f

我不熟悉SQLAlchemy(但不是一般的ORM),并且遇到了一个我实际上无法做任何有用的事情的问题。我所能做的就是对我的查询进行硬编码,这就是我想要做的

这正是我想要做的(请参阅Python注释,了解哪些是有效的,哪些是无效的-

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy import MetaData, Table
import pypyodbc

connection_string = 'mssql+pyodbc://U:P@SERVER/DB'

Base = declarative_base()


class Item(Base):
    __tablename__ = 'Items'

    id = Column('Id', Integer, primary_key=True)

engine = create_engine(connection_string, echo=True, module=pypyodbc)
sm = sessionmaker(engine)
session = sm()

# WORKS
for row in engine.execute('select top 1 Id from Items'):
    print(row)

# DOES NOT WORK
print(session.query(Item).get(111))
我得到的错误是
sqlalchemy.exc.NoSuchColumnError:“无法在“Items.Id”列的行中找到列

生成的SQL是正确的-

SELECT [Items].[Id] AS [Items_Id]
FROM [Items]
WHERE [Items].[Id] = 111
我知道我指向的是正确的数据库,因为如果我将
\u tablename
更改为不存在的内容,则会出现无效的对象名错误。
为什么SQLAlchemy找不到我的列?

试试
引擎。用生成的SQL执行
,检查每个行对象,你得到了正确的列和列名吗?@univerio:dictionary键,我假设是列名,是
items\u id
。小写?如果你更改
\u tablename\u会发生什么e> 到
'items'
id
'id'