On 10 Aug 2013, at 03:42, csdr...@gmail.com wrote:

> This is driving me a little crazy so hopefully someone here can help. This is 
> my first time working with sqlalchemy (v0.8). Python is v2.7.2 and MySQL is 
> v14.14. 
> 
> The (heavily) summarized code is as follows: 
> 
> class Price(Base):
>     __tablename__ = "prices"
>     id = Column(Integer, primary_key = True)
>     company_id = Column(Integer, ForeignKey('companies.id'))
>     date = Column(DateTime)
>     close = Column(Float)
>     volume = Column(Integer)
> 
>     def __init__(self, date, close, volume):
>         self.date = date
>         self.close = close
>         self.volume = volume
> 
> class Company(Base):
>     __tablename__ = "companies"
>     id = Column(Integer, primary_key = True)
>     ticker = Column(String(10))
>     company = Column(String(100))
>     prices = relationship("Price")
>     def __init__(self, ticker, company):
>         self.ticker = ticker
>         self.company = company
>     def get_prices(self):
>         csv_data = get_csv()
>         for row in csv_data:
>             date = row[0].strip()
>             date = datetime.datetime.strptime(date, '%Y-%m-%d')
>             close = float(row[4])
>             volume = int(row[5])
>             prices = Price(date = date, close = close, volume = volume)
>             session.add(prices)
> 
> So, what the code should do is have a table of companies and a table of daily 
> pricing data on all companies. I want to be able to access the prices via 
> company.prices. Instead, when I try to do this, Python returns an empty list 
> []. I know that the data is getting picked up somewhere because I see the SQL 
> activity when I do session.commit(). I've also tried modifying the 
> get_prices() function by changing the prices variable to a list + append() 
> and then at the end of the for loop doing a session.add_all(prices), but that 
> didn't work either. What am I doing incorrectly?
> 
> Thanks,
> 
> Chris

You haven't associated your Price instances with the Company instance. If you 
looked at the database, all the company_id values would be NULL.

If you put "self.prices.append(prices)" as the last line of your loop, it 
should all work. In fact, if you do that, the "session.add" will be unnecessary 
because the prices will be automatically added to the session (assuming that 
the company is already in the session).

Hope that helps,

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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to