This is the expected behavior. SQLA operates in a "case sensitive"
fashion whenever a table or column identifier is given in mixed case
or upper case. Use all lower case for "case insensitive". Since
SQLA seeks to provide a database-agnostic API to the backend, this
includes Oracle as well. "case sensitive" means that the identifier
will be quoted, in which case the database expects to match the
identifier against an identifier of the exact same characters.
Oracle's usual "UPPERCASE" identifiers are in fact case insensitive.
So for case insensitive identifiers, make sure you use all lower case
names like 'book_id'.
The keys() method of the ResultProxy, OTOH, doesn't attempt to
editorialize what comes back from the cursor, so in the case of oracle
you get upper case names (these are acceptable to use as keys for
row['somekey']). While we maybe could try to connect the original
select() statement's SQLA-encoded column names back to the
cursor.description's keys and return them as defined on the SQLAlchemy
side, you'd still get the uppercase names when we didn't have that
information, like execute("select * from table"). I have a vague
recollection of someone having a specific issue with that behavior but
I'm not finding what it was at the moment.
On Sep 29, 2008, at 10:04 AM, Itamar Ravid wrote:
>
> Hey guys - I've ran into a strange bug in 0.4.7p1 while trying to make
> use of Elixir's versioned plugin. In Oracle, given a table created as
> such:
>
> CREATE TABLE books
> (book_id NUMBER PRIMARY KEY);
>
> The following code fails:
>
> dbEng = create_engine("oracle://:@pearl")
> meta = MetaData()
> meta.bind = dbEng
>
> booksTable = Table("books", meta, autoload=True)
>
> booksTable.insert({'BOOK_ID': 200}).execute()
>
> Whilst the following, succeeds:
>
> booksTable.insert({'book_id': 200}).execute()
>
> This is strange, considering the fact that the following:
>
> result = booksTable.select().execute().fetchone()
> print result.keys()
>
> ... results in the column names in uppercase.
>
> Am I doing anything wrong?
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---