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

时间:2014-08-15 17:41:13

标签: 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
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: "Could not locate column in row for column 'Items.Id'"

生成的SQL是正确的 -

SELECT [Items].[Id] AS [Items_Id]
FROM [Items]
WHERE [Items].[Id] = 111

我知道我指的是正确的数据库,因为如果我将__tablename更改为不存在的内容,则会出现无效的对象名称错误。 为什么SQLAlchemy无法找到我的列?

0 个答案:

没有答案