On Sep 1, 1:39 pm, Kristian Thy <[EMAIL PROTECTED]> wrote:
> I'm giving TG2 (1.9.7a3) a whirl in a virtualenv after doing some
> stuff with TG1 a few months ago. Building my data model and trying to
> initialize the db as per the wiki example 
> athttp://www.turbogears.org/2.0/docs/main/Wiki20/wiki20.html#initializi...,
> I get the following TraceBack:
>
> Traceback (most recent call last):
>   File "initialize_db.py", line 13, in <module>
>     advice = Advice("Don't eat raw chicken.")
> TypeError: __init__() takes exactly 1 argument (2 given)
>
> The code in my initialize_db.py:
>
>     from mytestproject.model import DBSession, Advice, metadata
>     from sqlalchemy import create_engine
>
>     # Prepare the database connection
>     engine = create_engine("postgres://...", echo=True)
>     DBSession.configure(bind=engine)
>
>     # Create the tables
>     metadata.drop_all(engine)
>     metadata.create_all(engine)
>
>     # Create an object and set some data
>     advice = Advice("Don't eat raw chicken.")
>
>     # Save the object to the in memory DBSession
>     DBSession.save(advice)
>
>     # Use commit() to write all in-memory changes to the database.
>     DBSession.commit()
>
> The relevant definition from my data model:
>
>     advice_table = Table('advice', metadata,
>         Column('advice_id', Integer, primary_key=True),
>         Column('text', Unicode(255))
>     )
>
>     class Advice(object):
>         """Just what the doctor ordered.
>         """
>         def __init__(self, text):
>             self.text = text
>
>         def __repr__(self):
>             return '<Advice: text=%s>' % self.text
>
>     DBSession.mapper(Advice, advice_table)
       ^^^^^^^^^^^^

You need to do:

from sqlalchemy.orm import mapper

mapper(Advice, advice_table)

Regards
Sanjiv
>
> If I instead do it like this in initialize_db.py:
>
>     advice = Advice()
>     advice.text = "Don't eat raw chicken."
>
> it works and is committed to the database. If I fire up an interactive
> Python shell and import my model, the first form works (i.e.
> Advice("Foo") works as intended). What am I doing wrong?
>
> \\kristian
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" 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/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to