this is an issue of two edge cases.
One edge case is you want to emit this SQL on SQLite:
select query_users.user_id, query_users.user_name from query_users
UNION select query_users.user_id, query_users.user_name from query_users
and then access the columns like this:
row["user_id"], row["user_name"]
which is of course how every other database does it. Only SQLite decides that
only when a UNION is present, it's going to prepend the tablename to the keys
in cursor.description. So we strip them off so that the ORM and everything
else still works when a query like this comes through.
The other edge case is you want to explicitly use a label with a dot in it.
As it stands, we can choose among these two edge cases, and I'd note in the
current behavior, you *can* access your column using "foo.bar", it's just not
in keys() that way. In my view, being able to emit a UNION with
table-qualified columns is a lot more common than labels with dots in them.
Why not use another character that isn't meaningful in SQL ?
A patch to disable the behavior is below. If you can get test.sql.test_query,
which tests the above UNION case, to pass in some other way with SQLite, that
fix will go right in.
diff -r 813168d05065 lib/sqlalchemy/dialects/sqlite/base.py
--- a/lib/sqlalchemy/dialects/sqlite/base.py Thu Apr 26 11:59:50 2012 -0400
+++ b/lib/sqlalchemy/dialects/sqlite/base.py Fri Apr 27 09:50:48 2012 -0400
@@ -572,7 +572,7 @@
# in the case of UNION may store col names as
# "tablename.colname"
# in cursor.description
- if "." in colname:
+ if False: #"." in colname:
return colname.split(".")[1], colname
else:
return colname, None
On Apr 27, 2012, at 2:24 AM, Stefan Urbanek wrote:
> Hi,
>
> I had this problem ~year ago (see [1]). Now with SQLAlchemy 0.7.6 I am having
> this same problem back again. Here is a piece of code that shows this
> behaviour, in comparison to other backends as well:
>
> https://gist.github.com/2506388
>
> Verbosity and non-reusing instances is intentional.
>
> Is there any workaround for this issue?
>
> Thanks for any hints,
>
> Stefan
>
> [1] http://bit.ly/Je8V4I Selecting columns with dots in their names
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/sqlalchemy/-/xgqjb8tLAW8J.
> To post to this group, send email to [email protected].
> 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.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
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.