Go to Google Groups Home    pylons-discuss
Re: running scripts using pylons models

Contact 42 <contactm...@gmail.com>

Maybe I'm just not getting it, but this looks really complicated for
what it's trying to achieve (not the fault of the OP but more so because
of the paste config stuff).

serioiusly, why not just have

appconfig.py
dburi = 'postgres://user:password@localhost/db'

database.py
import appconfig.py
engine = create_engine(appconfig.dburi)
# tables defined here

model.py
import database
#model classes defined here
model.meta.connect(database.engine)

Then if you need to use any of this in a script, it's as simple as importing any of these modules into your script. Just plain python. Nothing special.

Huy

> Hello,

> I just wasted around 5 hours trying to figure out how to run a job
> that would use pylons models/config.  I finally did it so I'm
> submitting this script here and hoping that it will be somehow
> integrated into pylons and the documentation.  I hope that as a result
> it will save other peoples time and make pylons a better experience.

> Regards,

> from sqlalchemy import *
> import leisurenow.models as model
> from paste.deploy import appconfig, config, CONFIG
> import sys

> config_file = sys.argv[1]
> package = sys.argv[2]
> func = sys.argv[3]

> conf = appconfig('config:'+config_file)
> conf.update(dict(app_conf=conf.local_conf,
> global_conf=conf.global_conf))
> CONFIG.push_process_config(conf)
> if not conf.has_key('sqlalchemy.dburi'):
>      raise KeyError("No sqlalchemy database config found!")
> print "Connecting to database %s..."%repr(conf['sqlalchemy.dburi'])
> engine = create_engine(conf['sqlalchemy.dburi'])
> model.meta.connect(engine)

> pkg = __import__(package, globals(), locals(), [func])
> getattr(pkg, func)()