On Wed, Feb 3, 2016 at 3:54 PM, Alex Hall <ah...@autodist.com> wrote:

> Hello list,
> I'm new to SQLAlchemy, but not to Python. I have an application that's
> coming together, and relies on SQLAlchemy to talk to a database for
> many of the app's functions. Listing tables, listing records, updating
> records, pulling records for internal use, and so on.
>
> My app is working, but so far I've been writing the framework and GUI
> with a bit of SQLite just to check that things are working how I want.
> Now, though, I'm getting into my first "real" user-facing database
> task: taking the values from a dialog and updating a record according
> to those values. Thus far, I'm having no luck.
>
> My organization for now is DBInterface.py, which holds all my table
> definitions, database details, and my base, session, and engine
> objects. I can hear the groans from here; I do plan to move the table
> definitions into a module of their own at some point, there simply
> hasn't been a need yet. GUIManager.py imports DBInterface, and handles
> all the GUI stuff, as the name suggests. It's where, eventually, I'll
> take user input and use it to update records by calling functions from
> DBInterface. That's the problem, though. In GUIManager, I have a
> simple test:
>
> self.records[self.selectedRecordIndex].name="test name" #records is
> the list of objects returned by querying the current table
>
> Which errors out every time:
> AttributeError: can't set attribute
>
> (Yes, "name" is an attribute name of my Customer class.) From what
> I've read thus far, updating records is as easy as modifying their
> properties and calling session.commit(). That isn't working, though. I
> imagine the problem is that the records in a query aren't the same as
> the records originally created, and modify/commit only works on those
> originals. I'm not sure if that's right, though. If it is, how could I
> modify the originals, given that I run a new query each time the user
> selects a table name in my GUI's list of names? If I'm wrong, how
> would I update the record attributes and save the changes back to the
> database? I think I'm picturing this whole thing wrong, to be honest.
> Thanks for any help, and please let me know if I need to provide more
> code or context.
>
>
Is your query against a single mapped class, or is it against some set of
columns? What do you get if you write:

  print type(self.records[self.selectedRecordIndex])
  print repr(self.records[self.selectedRecordIndex])

...at the point where you are trying to set the name?

Simon

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to