Column type "Time" does not work
Version: 0.2.8 / rev1970
Using sqlite with columntype "Time": Error when creating table:
Traceback (most recent call last): File "createdb.py", line 8, in ? metadata.create_all() File "/sqlalchemy/schema.py", line 884, in create_all connectable.run_callable(do) File "/sqlalchemy/engine/base.py", line 459, in run_callable return callable_(conn, args, kwargs) File "/sqlalchemy/schema.py", line 883, in do conn.create(table) File "/sqlalchemy/engine/base.py", line 300, in create return self.__engine.create(entity, connection=self, kwargs) File "/sqlalchemy/engine/base.py", line 402, in create self._run_visitor(self.dialect.schemagenerator, entity, connection=connection, kwargs) File "/sqlalchemy/engine/base.py", line 426, in _run_visitor element.accept_schema_visitor(visitorcallable(self, conn.proxy, connection=conn, *kwargs)) File "/sqlalchemy/schema.py", line 279, in accept_schema_visitor return visitor.visit_table(self) File "/sqlalchemy/ansisql.py", line 635, in visit_table self.append("\t" + self.get_column_specification(column, first_pk=column.primary_key and not first_pk)) File "/sqlalchemy/databases/sqlite.py", line 284, in get_column_specification colspec = self.preparer.format_column(column) + " " + column.type.engine_impl(self.engine).get_col_spec() File "**/sqlalchemy/types.py", line 51, in get_col_spec raise NotImplementedError() NotImplementedError
After fixing this problem another one occurs when selecting a row with minutes greater than 23:
Traceback (most recent call last): File "<stdin>", line 1, in ? File "/sqlalchemy/orm/query.py", line 193, in selectfirst ret = self.select_whereclause(args, params) File "/sqlalchemy/orm/query.py", line 232, in select_whereclause return self._select_statement(statement, params=params) File "/sqlalchemy/orm/query.py", line 305, in _select_statement return self.instances(statement, params=params, kwargs) File "/sqlalchemy/orm/query.py", line 269, in instances return self.mapper.instances(result, self.session, kwargs) File "/sqlalchemy/orm/mapper.py", line 627, in instances self._instance(session, row, imap, result, populate_existing=populate_existing) File "/sqlalchemy/orm/mapper.py", line 1040, in _instance self.populate_instance(session, instance, row, identitykey, imap, isnew) File "/sqlalchemy/orm/mapper.py", line 1070, in populate_instance prop.execute(session, instance, row, identitykey, imap, isnew) File "/sqlalchemy/orm/properties.py", line 50, in execute instance.dictself.key = row[self.columns0] File "/sqlalchemy/engine/base.py", line 658, in getitem return self.__parent._get_col(self.__row, key) File "/sqlalchemy/engine/base.py", line 597, in _get_col return rec0.dialect_impl(self.dialect).convert_result_value(row[rec1], self.dialect) File "*/sqlalchemy/databases/sqlite.py", line 71, in convert_result_value return tup and datetime.time(tup4:7) ValueError: hour must be in 0..23
Comments (5)
-
Account Deleted -
Account Deleted Test:
from sqlalchemy import * db = create_engine('sqlite://') metadata = BoundMetaData(db) testTable = Table('test', metadata, Column('id', Integer(), primary_key = True), Column('time', Time())) testTable.create() # fails until adding type 'Time' class Test(object): pass testMapper = mapper(Test, testTable) t1 = Test() t1.time = '00:30:00' session = create_session() session.save(t1)# fails until fixing convert_result_value session.flush()
-
repo owner - changed status to resolved
thanks for the heads up. it took a little more than that to get the full round trip working. also fixes the Date type. changeset changeset:1973
-
repo owner - changed milestone to 0.4.0
Milestone next micropoint release deleted
-
repo owner - removed milestone
Removing milestone: 0.4.0 (automated comment)
- Log in to comment
Trac does not allow appending for "guest"...
Patch: