Hi, I am following the tutorial at:
http://wiki.pylonshq.com/display/pylonscookbook/Making+a+Pylons+Blog
but when it tells me how to set the model up, I run into some issues.
Can anyone tell me which of these two setups I should be using?
###############################
# WHAT I HAVE
###############################
import sqlalchemy as sa
from sqlalchemy import orm
from sqlalchemy import types
def init_model(bind):
"""Call me at the beginning of the application.
'bind' is a SQLAlchemy engine or connection, as returned by
sa.create_engine, sa.engine_from_config, or engine.connect().
"""
global engine, Session
engine = bind
Session = orm.scoped_session(
orm.sessionmaker(transactional=True, autoflush=True,
bind=bind))
orm.mapper(Blog, blog_table,
order_by=[blog_table.c.date.desc()])
meta = sa.MetaData()
blog_table = sa.Table("Blog", meta,
sa.Column("id", types.Integer, primary_key=True,
autoincrement=True),
sa.Column("subject", types.String(255)),
sa.Column("author", types.String(255)),
sa.Column("date", types.DateTime()),
sa.Column("content", types.Text()), #or types.TEXT() - to .Text()
doesn't exists :/
)
class Blog(object):
def __str(self):
return self.title
###############################
# WHAT I AM TOLD TO USE:
###############################
"""The application's model objects"""
import sqlalchemy as sa
from sqlalchemy import orm
from myblog.model import meta
def init_model(engine):
"""Call me before using any of the tables or classes in the
model"""
## Reflected tables must be defined and mapped here
#global reflected_table
#reflected_table = sa.Table("Reflected", meta.metadata,
autoload=True,
# autoload_with=engine)
#orm.mapper(Reflected, reflected_table)
sm = orm.sessionmaker(autoflush=True, transactional=True,
bind=engine)
meta.engine = engine
meta.Session = orm.scoped_session(sm)
## Non-reflected tables may be defined and mapped at module level
#foo_table = sa.Table("Foo", meta.metadata,
# sa.Column("id", sa.types.Integer, primary_key=True),
# sa.Column("bar", sa.types.String(255), nullable=False),
# )
#
#class Foo(object):
# pass
#
#orm.mapper(Foo, foo_table)
## Classes for reflected tables may be defined here, but the table and
## mapping itself must be done in the init_model function
#reflected_table = None
#
#class Reflected(object):
# pass
###############################
# WHAT I GET IF I USE THE SECOND
###############################
Starting subprocess with file monitor
C:\Documents and Settings\James\My Documents\MyBlog\myblog\model
\__init__.py:13:
SADeprecationWarning: The 'transactional' argument to sessionmaker()
is depreca
ted; use autocommit=True|False instead.
orm.sessionmaker(transactional=True, autoflush=True, bind=bind))
Traceback (most recent call last):
File "C:\Python25\scripts\paster-script.py", line 8, in <module>
load_entry_point('pastescript==1.6.3', 'console_scripts', 'paster')
()
File "c:\python25\lib\site-packages\pastescript-1.6.3-py2.5.egg\paste
\script\c
ommand.py", line 79, in run
invoke(command, command_name, options, args[1:])
File "c:\python25\lib\site-packages\pastescript-1.6.3-py2.5.egg\paste
\script\c
ommand.py", line 118, in invoke
exit_code = runner.run(args)
File "c:\python25\lib\site-packages\pastescript-1.6.3-py2.5.egg\paste
\script\c
ommand.py", line 213, in run
result = self.command()
File "c:\python25\lib\site-packages\pastescript-1.6.3-py2.5.egg\paste
\script\s
erve.py", line 251, in command
relative_to=base, global_conf=vars)
File "c:\python25\lib\site-packages\pastescript-1.6.3-py2.5.egg\paste
\script\s
erve.py", line 278, in loadapp
**kw)
File "c:\python25\lib\site-packages\pastedeploy-1.3.2-py2.5.egg\paste
\deploy\l
oadwsgi.py", line 204, in loadapp
return loadobj(APP, uri, name=name, **kw)
File "c:\python25\lib\site-packages\pastedeploy-1.3.2-py2.5.egg\paste
\deploy\l
oadwsgi.py", line 225, in loadobj
return context.create()
File "c:\python25\lib\site-packages\pastedeploy-1.3.2-py2.5.egg\paste
\deploy\l
oadwsgi.py", line 625, in create
return self.object_type.invoke(self)
File "c:\python25\lib\site-packages\pastedeploy-1.3.2-py2.5.egg\paste
\deploy\l
oadwsgi.py", line 110, in invoke
return fix_call(context.object, context.global_conf,
**context.local_conf)
File "c:\python25\lib\site-packages\pastedeploy-1.3.2-py2.5.egg\paste
\deploy\u
til\fixtypeerror.py", line 57, in fix_call
val = callable(*args, **kw)
File "C:\Documents and Settings\James\My Documents\MyBlog\myblog
\config\middle
ware.py", line 34, in make_app
load_environment(global_conf, app_conf)
File "C:\Documents and Settings\James\My Documents\MyBlog\myblog
\config\enviro
nment.py", line 49, in load_environment
model.init_model(engine)
File "C:\Documents and Settings\James\My Documents\MyBlog\myblog
\model\__init_
_.py", line 15, in init_model
order_by=[blog_table.c.date.desc()])
File "c:\python25\lib\site-packages\sqlalchemy-0.5.0rc2-py2.5.egg
\sqlalchemy\o
rm\__init__.py", line 670, in mapper
return Mapper(class_, local_table, *args, **params)
File "c:\python25\lib\site-packages\sqlalchemy-0.5.0rc2-py2.5.egg
\sqlalchemy\o
rm\mapper.py", line 196, in __init__
self.__compile_class()
File "c:\python25\lib\site-packages\sqlalchemy-0.5.0rc2-py2.5.egg
\sqlalchemy\o
rm\mapper.py", line 857, in __compile_class
self.class_)
sqlalchemy.exc.ArgumentError: Class '<class 'myblog.model.Blog'>'
already has a
primary mapper defined. Use non_primary=True to create a non primary
Mapper. cl
ear_mappers() will remove *all* current mappers from all classes.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" 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/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---