I'm new to SQLAlchemy, and am currently using it for Turbogears
developement.  I've run into an issue calling delete on an instance. This
almost exact same code works fine in one of my projects, but I get an error
in this particular one.  I think it may have be because this is a
many-to-many relationship while the other one is simply a many-to-one
relationship.  I think there's something I'm missing, and was hoping someone
might be able to see what it was.

Thanks,
Brad

Here's the setup:
===================
questions_table = Table('questions', metadata,
    Column('id', Integer, primary_key=True),
    Column('interrogative', Unicode(255), nullable=False),
    Column('sort_order', Integer, nullable=False, default=0)
)

choices_table = Table('choices', metadata,
    Column('id', Integer, primary_key=True),
    Column('a_choice', Unicode(255), nullable=False)
)

choices_questions_table = Table('choices_questions', metadata,
    Column('question_id', Integer, ForeignKey('questions.id')),
    Column('choice_id', Integer, ForeignKey('choices.id'))
)

class Question(object):
    """The Question class."""
    def __init__(self, interrogative, order):
        self.interrogative = interrogative
        self.sort_order = order

class Choice(object):
    """The Choice class."""
    def __init__(self, a_choice):
        self.a_choice = a_choice

assign_mapper(session.context, Question, questions_table,
        properties=dict(choices=relation(Choice,
secondary=choices_questions_table, backref='questions')))

assign_mapper(session.context, Choice, choices_table)


Here's the function that's having problems:
======================================
def q_delete(self, qid):
    del_q = Question.get(int(qid))
    Question.delete(del_q)
    raise redirect("/admin")


Here's the error:
=====================
Page handler: <bound method AdminController.q_delete of <
neognosis.controllers.AdminController object at 0x2151490>>
Traceback (most recent call last):
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/CherryPy-
2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 105, in _run
    self.main()
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/CherryPy-
2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 254, in main
    body = page_handler(*virtual_path, **self.params)
  File "<string>", line 3, in q_delete
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
1.0-py2.4.egg/turbogears/controllers.py", line 334, in expose
    output = database.run_with_transaction(
  File "<string>", line 5, in run_with_transaction
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
1.0-py2.4.egg/turbogears/database.py", line 305, in sa_rwt
    retval = dispatch_exception(e,args,kw)
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
1.0-py2.4.egg /turbogears/database.py", line 303, in sa_rwt
    transaction.commit()
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/session.py", line 54,
in commit
  File "build/bdist.macosx-10.3-fat /egg/sqlalchemy/orm/session.py", line
220, in flush
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/unitofwork.py", line
194, in flush
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/unitofwork.py", line
321, in execute
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/unitofwork.py", line
771, in preexecute
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/dependency.py", line
176, in preprocess_dependencies
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/dependency.py", line
99, in get_object_dependencies
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/attributes.py", line
686, in get_history
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/attributes.py", line
85, in get_history
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/attributes.py", line
183, in get
  File "build/bdist.macosx- 10.3-fat/egg/sqlalchemy/orm/strategies.py", line
220, in lazyload
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/query.py", line 254,
in select_whereclause
  File "build/bdist.macosx-10.3-fat /egg/sqlalchemy/orm/query.py", line 380,
in _select_statement
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/query.py", line 312,
in execute
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/orm/query.py", line 330,
in instances
  File "build/bdist.macosx-10.3-fat/egg/sqlalchemy/engine/base.py", line
671, in fetchall
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/MySQLdb/cursors.py",
line 258, in fetchall
    self._check_executed()
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/MySQLdb/cursors.py",
line 54, in _check_executed
    self.errorhandler(self, ProgrammingError, "execute() first")
  File
"/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/MySQLdb/connections.py",
line 33, in defaulterrorhandler
    raise errorclass, errorvalue
ProgrammingError: execute() first

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to