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