its not working. make sure you do in fact have the onupdate
configured on the correct Column/Table, etc.
On Jan 14, 2009, at 10:50 PM, atomburner wrote:
>
> Thank you for such a prompt response.
>
> Per the excellent documentation I added the following four lines to
> my .py script:
>
> import logging
>
> logging.basicConfig()
> logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
> logging.getLogger('sqlalchemy.orm.unitofwork').setLevel
> (logging.DEBUG)
>
> And received the following log output:
>
> INFO:sqlalchemy.engine.base.Engine.0x...0350:
> SELECT a.attname,
> pg_catalog.format_type(a.atttypid, a.atttypmod),
> (SELECT substring(d.adsrc for 128) FROM
> pg_catalog.pg_attrdef d
> WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND
> a.atthasdef)
> AS DEFAULT,
> a.attnotnull, a.attnum, a.attrelid as table_oid
> FROM pg_catalog.pg_attribute a
> WHERE a.attrelid = (
> SELECT c.oid
> FROM pg_catalog.pg_class c
> LEFT JOIN pg_catalog.pg_namespace n ON n.oid =
> c.relnamespace
> WHERE (pg_catalog.pg_table_is_visible(c.oid))
> AND c.relname = %(table_name)s AND c.relkind in
> ('r','v')
> ) AND a.attnum > 0 AND NOT a.attisdropped
> ORDER BY a.attnum
>
> INFO:sqlalchemy.engine.base.Engine.0x...0350:{'table_name':
> 'products'}
> INFO:sqlalchemy.engine.base.Engine.0x...0350:
> SELECT t.typname as "name",
> pg_catalog.format_type(t.typbasetype, t.typtypmod)
> as "attype",
> not t.typnotnull as "nullable",
> t.typdefault as "default",
> pg_catalog.pg_type_is_visible(t.oid) as "visible",
> n.nspname as "schema"
> FROM pg_catalog.pg_type t
> LEFT JOIN pg_catalog.pg_namespace n ON n.oid =
> t.typnamespace
> LEFT JOIN pg_catalog.pg_constraint r ON t.oid =
> r.contypid
> WHERE t.typtype = 'd'
>
> INFO:sqlalchemy.engine.base.Engine.0x...0350:{}
> INFO:sqlalchemy.engine.base.Engine.0x...0350:
> SELECT attname FROM pg_attribute
> WHERE attrelid = (
> SELECT indexrelid FROM pg_index i
> WHERE i.indrelid = %(table)s
> AND i.indisprimary = 't')
> ORDER BY attnum
>
> INFO:sqlalchemy.engine.base.Engine.0x...0350:{'table': 16726}
> INFO:sqlalchemy.engine.base.Engine.0x...0350:
> SELECT conname, pg_catalog.pg_get_constraintdef(oid, true)
> as condef
> FROM pg_catalog.pg_constraint r
> WHERE r.conrelid = %(table)s AND r.contype = 'f'
> ORDER BY 1
>
> INFO:sqlalchemy.engine.base.Engine.0x...0350:{'table': 16726}
> INFO:sqlalchemy.engine.base.Engine.0x...0350:UPDATE products SET
> title=
> %(title)s WHERE products.name = %(name_1)s
> INFO:sqlalchemy.engine.base.Engine.0x...0350:{'title':
> 'updated_title', 'name_1': 'test'}
> INFO:sqlalchemy.engine.base.Engine.0x...0350:COMMIT
>
>
>
> On Jan 14, 7:36 am, Michael Bayer <[email protected]> wrote:
>> that should be fine, what does your log output say ?
>>
>> On Jan 14, 2009, at 12:38 AM, atomburner wrote:
>>
>>
>>
>>> Mr. Bayer, you know entirely too much about all kinds of databases.
>>
>>> A follow-up question to your erudite comment (and let me first say
>>> that I love sqlalchemy and have spent a good amount of time immersed
>>> in its documentation before posting):
>>
>>> I tried running an update query of the form
>>
>>> conn.execute(tbl.update().where(tbl.c.name=='test').values
>>> (title='updated_title'))
>>
>>> FWIW the column was setup as follows (in PostgreSQL 8.2):
>>
>>> Column('updated', DateTime,onupdate=func.now())
>>
>>> After running above code and requerying the db, the 'updated' column
>>> is still null.
>>
>>> I also tried using func.current_timestamp() with no luck.
>>
>>> Any tips you are able to provide are greatly appreciated.
>>
>>> Best regards,
>>> Atom
>>
>>> On Dec 6 2008, 6:48 am, Michael Bayer <[email protected]>
>>> wrote:
>>>> that is the correct syntax. It will take effect any time an
>>>> update()
>>>> construct is used or when the ORM updates a row.
>>>> Becauseonupdateis
>>>> not aDDL-side construct, it will not take effect if you use a plain
>>>> text UPDATE statement or if the update is otherwise not emitted by
>>>> the
>>>> SQLAlchemy application. The PassiveDefault, since it does
>>>> represent
>>>> DDL, will work in this manner, but only if the table was created
>>>> using
>>>> this table construct.
>>
>>>> On Dec 6, 2008, at 4:50 AM, jo wrote:
>>
>>>>> Hi all,
>>
>>>>> I created a table with the following column:
>>
>>>>> Column('last_updated', DateTime,
>>>>> PassiveDefault(func.current_timestamp
>>>>> ()),onupdate=func.current_timestamp())
>>
>>>>> Maybe I don't understand howonupdateworks.
>>>>> I would like to have this column to be changed every time the
>>>>> row is
>>>>> updated,
>>>>> but it doesn't work.
>>
>>>>> thank you for any help
>>
>>>>> j
>>
>>
> >
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---