I'm trying to reflect a sqlite database with the hg tip, and it seems
to fail whenever a BINARY column is present in the database. The same
error happens whether reflecting the entire database at once (using
metadata.reflect()) or just reflecting the specific table. A reduction
with a traceback is below.

I don't really know enough about the types system to know if this is
something I'm doing wrong or something sqlalchemy is doing wrong, but
it seems to have been introduced in r7154: 
http://hg.sqlalchemy.org/sqlalchemy/rev/e409e3adb99f

Thanks!
Scott


$ sqlite3 foo.db
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE foo (bar BINARY(16));
sqlite> .exit

$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sqlalchemy import create_engine, MetaData
>>> engine = create_engine('sqlite:///foo.db')
>>> meta = MetaData()
>>> meta.reflect(bind=engine)
.../sqlalchemy/lib/sqlalchemy/engine/reflection.py:46: SAWarning: Did
not recognize type 'BINARY' of column 'bar'
  ret = fn(self, con, *args, **kw)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../sqlalchemy/lib/sqlalchemy/schema.py", line 2094, in
reflect
    Table(name, self, **reflect_opts)
  File ".../sqlalchemy/lib/sqlalchemy/schema.py", line 212, in __new__
    table._init(name, metadata, *args, **kw)
  File ".../sqlalchemy/lib/sqlalchemy/schema.py", line 259, in _init
    include_columns=include_columns)
  File ".../sqlalchemy/lib/sqlalchemy/engine/base.py", line 1947, in
reflecttable
    self.dialect.reflecttable(conn, table, include_columns)
  File ".../sqlalchemy/lib/sqlalchemy/engine/default.py", line 247, in
reflecttable
    return insp.reflecttable(table, include_columns)
  File ".../sqlalchemy/lib/sqlalchemy/engine/reflection.py", line 382,
in reflecttable
    for col_d in self.get_columns(table_name, schema, **tblkw):
  File ".../sqlalchemy/lib/sqlalchemy/engine/reflection.py", line 229,
in get_columns
    **kw)
  File "<string>", line 1, in <lambda>
  File ".../sqlalchemy/lib/sqlalchemy/engine/reflection.py", line 46,
in cache
    ret = fn(self, con, *args, **kw)
  File ".../sqlalchemy/lib/sqlalchemy/dialects/sqlite/base.py", line
534, in get_columns
    coltype = coltype(*[int(a) for a in args])
TypeError: __init__() takes exactly 1 argument (2 given)

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to