It's all from a GUI, so it's something like this (my code isn't in front of me):
DBInterface.session"query(self.choices[self.selectedIndex][0]).all()
Choices is a 2D array where the first (0th) element of each sub-array is a 
table object. The query works, because I get the records as expected and can 
display them or inspect them. I just can't modify them for some reason. As I 
said, though, I'm new to this package so am likely missing an obvious step, or 
have something set up very wrong. 

Sent from my iPhone

> On Feb 3, 2016, at 16:18, Simon King <si...@simonking.org.uk> wrote:
> 
> OK, so you’re not actually getting Customer objects back from your query. 
> What does your call to session.query() look like? For this to work, it really 
> ought to be something like “session.query(Customer)”. I suspect you are doing 
> something like “session.query(Customer.id, Customer.name, …)” instead.
> 
> Simon
> 
>> On 3 Feb 2016, at 17:43, Alex Hall <ah...@autodist.com> wrote:
>> 
>> I'm on the Gmail site, so am not sure I can reply in-line. Sorry.
>> 
>> This is a basic table class, like
>> class Customer(base):
>> __tablename__ = "customers"
>> name = Column(String(50)),
>> ...
>> 
>> When I print the type:
>> <class 'sqlalchemy.util._collections.result'>
>> And repr():
>> (2, u'Powersports Etc', 5554443210L, u'ahall+dbte...@autodist.com', True)
>> 
>> 
>>> On 2/3/16, Simon King <si...@simonking.org.uk> wrote:
>>>> 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.
>> 
>> -- 
>> 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.
> 
> -- 
> 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.

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