On Aug 16, 2011, at 7:39 PM, Dirk Makowski wrote:
> Slowly I am becoming bald...
>
> Here is a stand-alone script that reproduces the behaviour. Code is a bit
> verbose, had copied it from my actual project, and it uses PostgreSQL
> database, and you have to issue an "CREATE SCHEMA sample" beforehand. Sorry
> about that.
>
> The script's output is below. When I inspect the table with psql, the
> "deleted" record is still present. And SQLAlchemy has logged the statements
> without errors.
Your script calls the delete() under the __main__ section but then just ends,
there's no call to commit(). Add a commit() in and the data is committed
(assuming the zope system works, I tested here using just plain
Session.commit() - see output below).
=== COUNTING BEFORE ==============================
2011-08-16 19:47:32,132 INFO sqlalchemy.engine.base.Engine SELECT
count(rolemember.id) AS count_1
FROM rolemember
2011-08-16 19:47:32,132 INFO sqlalchemy.engine.base.Engine {}
=== FETCHING ID TO DELETE ==============================
2011-08-16 19:47:32,133 INFO sqlalchemy.engine.base.Engine SELECT rolemember.id
AS rolemember_id, rolemember.ctime AS rolemember_ctime, rolemember.mtime AS
rolemember_mtime, rolemember.principal_id AS rolemember_principal_id,
rolemember.role_id AS rolemember_role_id, rolemember.owner AS rolemember_owner,
rolemember.editor AS rolemember_editor
FROM rolemember ORDER BY rolemember.id
LIMIT %(param_1)s
2011-08-16 19:47:32,133 INFO sqlalchemy.engine.base.Engine {'param_1': 1}
=== DELETING ==============================
2011-08-16 19:47:32,135 INFO sqlalchemy.engine.base.Engine DELETE FROM
rolemember WHERE rolemember.id = %(id_1)s
2011-08-16 19:47:32,135 INFO sqlalchemy.engine.base.Engine {'id_1': 1L}
=== COUNTING AFTER ==============================
2011-08-16 19:47:32,136 INFO sqlalchemy.engine.base.Engine SELECT
count(rolemember.id) AS count_1
FROM rolemember
2011-08-16 19:47:32,136 INFO sqlalchemy.engine.base.Engine {}
=== RESULT ==============================
Total before: 7
Deleted id: 1
Total after: 6
Use e.g. psql to inspect db table
2011-08-16 19:47:32,137 INFO sqlalchemy.engine.base.Engine COMMIT
classics-MacBook-Pro:sqlalchemy classic$ /usr/local/pgsql/bin/psql -U scott test
psql (8.4.4)
Type "help" for help.
test=> select * from rolemember
test-> ;
id | ctime | mtime | principal_id | role_id | owner |
editor
----+---------------------------+-------+--------------+---------+-------+--------
2 | 2011-08-16 19:47:32.10476 | | 1 | 2 | 1 |
3 | 2011-08-16 19:47:32.10476 | | 2 | 3 | 1 |
4 | 2011-08-16 19:47:32.10476 | | 2 | 2 | 1 |
5 | 2011-08-16 19:47:32.10476 | | 98 | 3 | 1 |
6 | 2011-08-16 19:47:32.10476 | | 98 | 2 | 1 |
7 | 2011-08-16 19:47:32.10476 | | 101 | 3 | 1 |
(6 rows)
>
> BEGIN TEST
>
> === COUNTING BEFORE ==============================
>
> 2011-08-17 01:33:41,779 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
> 2011-08-17 01:33:41,779 INFO sqlalchemy.engine.base.Engine SELECT
> count(sample.rolemember.id) AS count_1
> FROM sample.rolemember
> 2011-08-17 01:33:41,779 INFO sqlalchemy.engine.base.Engine {}
>
> === FETCHING ID TO DELETE ==============================
>
> 2011-08-17 01:33:41,780 INFO sqlalchemy.engine.base.Engine SELECT
> sample.rolemember.id AS sample_rolemember_id, sample.rolemember.ctime AS
> sample_rolemember_ctime, sample.rolemember.mtime AS sample_rolemember_mtime,
> sample.rolemember.principal_id AS sample_rolemember_principal_id,
> sample.rolemember.role_id AS sample_rolemember_role_id,
> sample.rolemember.owner AS sample_rolemember_owner, sample.rolemember.editor
> AS sample_rolemember_editor
> FROM sample.rolemember ORDER BY sample.rolemember.id
> LIMIT %(param_1)s OFFSET %(param_2)s
> 2011-08-17 01:33:41,780 INFO sqlalchemy.engine.base.Engine {'param_1': 1,
> 'param_2': 0}
>
> === DELETING ==============================
>
> 2011-08-17 01:33:41,781 INFO sqlalchemy.engine.base.Engine DELETE FROM
> sample.rolemember WHERE sample.rolemember.id = %(id_1)s
> 2011-08-17 01:33:41,781 INFO sqlalchemy.engine.base.Engine {'id_1': 7L}
>
> === COUNTING AFTER ==============================
>
> 2011-08-17 01:33:41,782 INFO sqlalchemy.engine.base.Engine SELECT
> count(sample.rolemember.id) AS count_1
> FROM sample.rolemember
> 2011-08-17 01:33:41,782 INFO sqlalchemy.engine.base.Engine {}
>
> === RESULT ==============================
>
> Total before: 7
> Deleted id: 7
> Total after: 6
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/sqlalchemy/-/yIobsELwojwJ.
> 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.
> <sa-test_many2many_relationship.py>
--
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.