Michael Bayer ha scritto: > read the thread, no idea what a space has to do with anything. can > you be more specific. >
pySQLite read the first word of the column spec to find the converter. Here is a full example: import decimal from pysqlite2 import dbapi2 as sqlite from sqlalchemy import * db = create_engine('sqlite:///', connect_args={'detect_types': sqlite.PARSE_DECLTYPES}) conn = db.contextual_connect() # To avoid the conversion to float sqlite.register_converter("NUMERIC", lambda s: s) class Decimal(TypeEngine): def __init__(self, precision=10, length=2): self.precision = precision self.length = length def get_col_spec(self): if 1: # Make sure to add a spece after the first string prefix = 'NUMERIC ' else: prefix = 'NUMERIC' return prefix + '(%(precision)s, %(length)s)' % {'precision': self.precision, 'length' : self.length} def convert_bind_param(self, value, dialect): return str(value) def convert_result_value(self, value, dialect): return decimal.Decimal(value) metadata = BoundMetaData(db) a = Table( 'a', metadata, Column('x', Decimal(7, 3)), Column('y', Decimal(10, 5)), ) metadata.create_all() i = a.insert() conn.execute(i, x=decimal.Decimal('12.42'), y=decimal.Decimal('1')) s = a.select() print conn.execute(s).fetchone() Whitout the space after 'NUMERIC', pysqlite does not call the converter I have registered. Regards Manlio Perillo --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---