Hi all,

I have a PG database with tables like the following

 Column  |            Type             |                Modifiers               
 id      | uuid                        | not null default uuid_generate_v1()
 created | timestamp without time zone | not null default 
 changed | timestamp without time zone | 
 name    | character varying(192)      | not null
 code    | character varying(64)       | not null
 value   | integer                     | 

with a trigger that updates the "changed" field whenever a record is modified.

Accordingly to the documentation[1] I thus modelled it like in the following

    import sqlalchemy as sa
    import sqlalchemy.orm as orm
    import sqlalchemy.types as types
    import sqlalchemy.dialects.postgresql as sapg

    md = sa.MetaData()

    testtable = sa.Table(
        'testtable', md,
        sa.Column('id', sapg.UUID(True),
        sa.Column('created', types.DateTime(),
        sa.Column('changed', types.DateTime(),
        sa.Column('name', types.Unicode(192),
        sa.Column('code', types.Unicode(64),
        sa.Column('value', types.Integer,

    class Base:
        def __init__(self, **kwargs):
            cls_ = type(self)
            for k in kwargs:
                setattr(self, k, kwargs[k])

    class TestTable(Base):

    orm.mapper(TestTable, testtable)

This works, but I notice that SA explicitly inserts the "changed" field with a
None value on INSERTs, that is the following snippet:

    e = sa.create_engine('postgresql://localhost/test', echo=True)

    s = orm.Session(e)

    o1 = TestTable(name='foo', code='bar')

produces a log like the following:

    2018-02-04 11:34:12,464 INFO sqlalchemy.engine.base.Engine INSERT INTO 
testtable (changed, name, code, value) VALUES (%(changed)s, %(name)s, %(code)s, 
%(value)s) RETURNING testtable.id
    2018-02-04 11:34:12,464 INFO sqlalchemy.engine.base.Engine {'changed': 
None, 'name': 'foo', 'code': 'bar', 'value': None}

The doubt is: why is SA providing explicit None values for both "changed" and
"value" fields? Am I missing something in the table description or what?

Thanks in advance for any enlightenment!

ciao, lele.

[1] http://docs.sqlalchemy.org/en/latest/core/defaults.html#triggered-columns
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
l...@metapensiero.it  |                 -- Fortunato Depero, 1929.

SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper


To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to