使用SQLalchemy反映Oracle DB并不反映列

时间:2016-07-25 10:13:56

标签: python python-3.x sqlalchemy

我正在连接Oracle DB,我无法控制。由于我必须在访问表之前定义自定义模式,因此自动化数据库对我来说不起作用。由于某些原因,sqlalchemy或oracle不知道如何自动增加id,因此我认为唯一的解决方案是反映表格。 SQLalchemy可以找到表,但问题是,当我尝试进行查询时,它会抱怨AttributeError: 'Table' object has no attribute 'column_a',当我打印所有列时,它会清楚地显示它们。它打印print([c.name for c in reflected_table_a.columns]):['id','column_a',...]

# connecting the DB
engine = create_engine("oracle+cx_oracle://" +str(connection_string))

# reflecting tables
Base = declarative_base()

reflected_table_a = Table('TABLE_A',
    Base.metadata,
    # With this line I'm also getting the Invalid Identifier error
    #Column('id', Integer, primary_key=True),
    autoload=True,
    autoload_with=engine,
    schema='oracle_stuff'
)

# making the session
session = create_session(bind=engine)

session.query(reflected_table_a).filter(reflected_table_a.column_a == 'foo').all()
# here we are getting the "AttributeError: 'Table' object has no attribute 'column_a'" error

#this works just fine
session.query(reflected_table_a).all()
# gets all the rows

所以它几乎可以工作,但事实并非如此,因为如何解决这个问题。列名和表名与DB中的计数器部分匹配。

0 个答案:

没有答案