On Wed, Apr 17, 2013 at 2:38 AM, Evan Jon <[email protected]> wrote:
> Hello all,
>
> I want to map a table whose name is BAND_ORDER_OF_LOCAL_TESTING.
>
> class BandOrderOfLocalTesting(Base):
> __TABLENAME__ = 'BAND_ORDER_OF_LOCAL_TESTING'
> order_id = Column("order_id", Number(18), primary_key=True)
> ...
I assume the above is a typo - you need to be setting __tablename__,
not __TABLENAME__.
>
> Each time I got the following message:
> 013-04-17 09:26:55,857 INFO sqlalchemy.engine.base.Engine {'ROWNUM_1': 1}
> Traceback (most recent call last):
> File "tables.py", line 108, in <module>
> instance = session.query(BandOrderOfMonth).first()
> File
> "/usr/lib/python2.7/site-packages/SQLAlchemy-0.8.1dev-py2.7.egg/sqlalchemy/orm/query.py",
> line 2181, in first
> ret = list(self[0:1])
> File
> "/usr/lib/python2.7/site-packages/SQLAlchemy-0.8.1dev-py2.7.egg/sqlalchemy/orm/query.py",
> line 2048, in __getitem__
> return list(res)
> File
> "/usr/lib/python2.7/site-packages/SQLAlchemy-0.8.1dev-py2.7.egg/sqlalchemy/orm/loading.py",
> line 72, in instances
> rows = [process[0](row, None) for row in fetch]
> File
> "/usr/lib/python2.7/site-packages/SQLAlchemy-0.8.1dev-py2.7.egg/sqlalchemy/orm/loading.py",
> line 356, in _instance
> tuple([row[column] for column in pk_cols])
> File
> "/usr/lib/python2.7/site-packages/SQLAlchemy-0.8.1dev-py2.7.egg/sqlalchemy/engine/result.py",
> line 71, in __getitem__
> processor, obj, index = self._parent._key_fallback(key)
> File
> "/usr/lib/python2.7/site-packages/SQLAlchemy-0.8.1dev-py2.7.egg/sqlalchemy/engine/result.py",
> line 314, in _key_fallback
> expression._string_or_unprintable(key))
> sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column
> 'BAND_ORDER_OF_LOCAL_TESTING.order_id'"
>
> Is there a limit of table name in sqlalchemy?
> How to solve this problem?
>
> Best regards,
> Evan
>
The class that you are querying here (BandOrderOfMonth) doesn't match
the class that you mentioned above, so it's difficult to know what is
going on. A full running example would make it easier to understand.
What database system are you working with? Different databases have
different rules about case sensitivity. From an SQL prompt, does
"SELECT * from band_order_of_local_testing" work, or give an error?
In general, SQLAlchemy assumes that if you specify a table name with
any upper-case characters, then the table name is case-sensitive and
so it will be quoted in any queries. If you specify the table name in
all lower-case, it is assumed to be case-insensitive:
http://docs.sqlalchemy.org/en/rel_0_8/core/schema.html#sqlalchemy.schema.Table
I suggest you try specifying the table name in lower-case and see if it works.
Hope that helps,
Simon
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.