I have the following model.py:
import elixir as se
from turbogears.database import metadata, session
metadata.engine.echo = True
class System (se.Entity):
se.using_options(tablename="system")
se.has_field("id", se.Integer, primary_key=True)
se.has_field("name", se.Unicode, unique=True)
I have created the database:
$ tg-admin sql create
CREATE TABLE system (
id INTEGER NOT NULL,
name TEXT,
PRIMARY KEY (id),
UNIQUE (name)
)
2007-06-01 15:20:23,256 sqlalchemy.engine.base.Engine.0x..10 INFO
CREATE TABLE system (
id INTEGER NOT NULL,
name TEXT,
PRIMARY KEY (id),
UNIQUE (name)
)
2007-06-01 15:20:23,256 INFO sqlalchemy.engine.base.Engine.0x..10 None
2007-06-01 15:20:23,256 sqlalchemy.engine.base.Engine.0x..10 INFO None
2007-06-01 15:20:23,307 INFO sqlalchemy.engine.base.Engine.0x..10
COMMIT
Now, if I try to interact with my model in a python shell, I can't use
objectstore.flush() to commit anything, but it works if I call flush()
on the object itself:
tg-admin shell
(CustomShell)
>>> System(name="system1")
<model.System object at 0x1a3ea50>
>>> se.objectstore.flush()
>>>
System.select()
2007-06-01 15:25:09,382 INFO sqlalchemy.engine.base.Engine.0x..d0
SELECT system.id AS system_id, system.name AS system_name
FROM system ORDER BY system.oid
2007-06-01 15:25:09,382 sqlalchemy.engine.base.Engine.0x..d0 INFO
SELECT system.id AS system_id, system.name AS system_name
FROM system ORDER BY system.oid
2007-06-01 15:25:09,382 INFO sqlalchemy.engine.base.Engine.0x..d0 []
2007-06-01 15:25:09,382 sqlalchemy.engine.base.Engine.0x..d0 INFO []
[]
>>> System(name="system1").flush()
2007-06-01 15:26:19,571 INFO sqlalchemy.engine.base.Engine.0x..d0
BEGIN
2007-06-01 15:26:19,571 sqlalchemy.engine.base.Engine.0x..d0 INFO
BEGIN
2007-06-01 15:26:19,572 INFO sqlalchemy.engine.base.Engine.0x..d0
INSERT INTO system (name) VALUES (?)
2007-06-01 15:26:19,572 sqlalchemy.engine.base.Engine.0x..d0 INFO
INSERT INTO system (name) VALUES (?)
2007-06-01 15:26:19,573 INFO sqlalchemy.engine.base.Engine.0x..d0
['system1']
2007-06-01 15:26:19,573 sqlalchemy.engine.base.Engine.0x..d0 INFO
['system1']
2007-06-01 15:26:19,683 INFO sqlalchemy.engine.base.Engine.0x..d0
COMMIT
2007-06-01 15:26:19,683 sqlalchemy.engine.base.Engine.0x..d0 INFO
COMMIT
>>> System.select()
2007-06-01 15:26:25,337 INFO sqlalchemy.engine.base.Engine.0x..d0
SELECT system.id AS system_id, system.name AS system_name
FROM system ORDER BY system.oid
2007-06-01 15:26:25,337 sqlalchemy.engine.base.Engine.0x..d0 INFO
SELECT system.id AS system_id, system.name AS system_name
FROM system ORDER BY system.oid
2007-06-01 15:26:25,337 INFO sqlalchemy.engine.base.Engine.0x..d0 []
2007-06-01 15:26:25,337 sqlalchemy.engine.base.Engine.0x..d0 INFO []
[<model.System object at 0x1a3e8d0>]
>>>
I'd appreciate any advice.
~jon
--
Gaëtan de Menten
http://openhex.org