4 messages in com.googlegroups.sqlalchemy[sqlalchemy] Re: Delete Problems| From | Sent On | Attachments |
|---|---|---|
| Brad Lindsay | 20 Feb 2007 07:11 | |
| Michael Bayer | 20 Feb 2007 07:42 | |
| Brad Lindsay | 22 Feb 2007 08:47 | |
| Michael Bayer | 22 Feb 2007 12:29 |
| Subject: | [sqlalchemy] Re: Delete Problems![]() |
|---|---|
| From: | Brad Lindsay (brad...@gmail.com) |
| Date: | 02/22/2007 08:47:18 AM |
| List: | com.googlegroups.sqlalchemy |
Michael, Thanks for your quick response. I found out what was causing the problem. I had another table in relationship with questions that I failed to mention in my post because I forgot about that relationship. Using assign_mapper, it had looked like this: assign_mapper(session.context, Response, responses_table, properties=dict(visit=relation(Visit, backref='responses'), questions=relation(Question, backref='responses')))
By taking out the backref='responses' in the Question relation, the delete worked perfectly. Does this mean, however, that Question instances won't be able to have access to their related responses?
Thanks, Brad
On 2/20/07, Michael Bayer <mike...@zzzcomputing.com> wrote:
this is something related to how turbogears is integrating SQLAlchemy. there might be a bug in SA here but I cant track it down without an example that shows what TG is doing more specifically. in particular i hope they are using the QueuePool connection pool and not the SingletonThreadPool....the error involves a cursor being shared between two conflicting states.
On Feb 20, 2007, at 10:12 AM, Brad Lindsay wrote:
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 sqla...@googlegroups.com
To unsubscribe from this group, send email to
sqla...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---




