nah, i still have no idea how the error message youre getting could  
be caused...ive never seen that message before.  backrefs should have  
nothing to do with it.   i still think TG, or your application, is  
doing something funny with cursors or something like that, for you to  
get an error where someone is calling "fetchrow()" on a cursor  
without it being executed.  within SA itself that should be impossible.

if you can produce a script that i can just run, and gives you that  
error, that would be immeasurably helpful.

On Feb 22, 2007, at 11:47 AM, Brad Lindsay wrote:

> 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 <[EMAIL PROTECTED]> 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.AdminCont
>> roller 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