On Oct 28, 2010, at 4:41 AM, KLEIN Stéphane wrote:
> Hi,
>
> in my project, I use "onupdate" attribute :
>
> foobar_table = Table("FooBar", meta.metadata,
> ...
> Column("created", DateTime(), default=datetime.datetime.now),
> Column("modified", DateTime(), default=datetime.datetime.now,
> onupdate=datetime.datetime.now),
> ...
> )
>
> All work great.
>
> However, my project have an importation feature and I need to set
> original "modified" field value.
>
> To do that, I've try this solution :
>
> my_foobar_obj.modifield =
> datetime.datetime.strptime(source_date_value, '%Y-%m-%d %H:%M:%S')
> session.commit()
>
> => not success, "modified" field not contain "source_date_value" but
> current date
>
> Other solution :
>
> foobar_table.update().\
> where(foobar_table.c.id==my_foobar_obj.id).\
>
> values(modified=datetime.datetime.strptime(source_date_value, '%Y-%m-
> %d %H:%M:%S'))
>
> => not success, "modified" field not contain "source_date_value" but
> current date
>
> Have you a tips to manually change "modified" field value ?
any value that you send explicitly for the column during an update overrides
the "onupdate" value. Below is a test case which illustrates this:
from sqlalchemy import *
import datetime
e = create_engine('sqlite://', echo=True)
m = MetaData()
t = Table('t', m,
Column('id', Integer, primary_key=True),
Column('modified', DateTime(),
default=datetime.datetime.now,
onupdate=datetime.datetime.now
)
)
m.create_all(e)
old_date = datetime.datetime(2009, 10, 15, 15, 45, 0)
e.execute(t.insert().values(id=1))
e.execute(t.insert().values(id=2))
e.execute(t.insert().values(id=3, modified=old_date))
e.execute(t.update().where(t.c.id==2).values(modified=old_date))
assert e.execute(
select([t.c.id]).
order_by(t.c.id).
where(t.c.modified==old_date)
).fetchall() == [(2, ), (3, )]
>
> Thanks for your help,
> Stephane
>
> --
> 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.
>
--
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.