On 7/17/15 5:02 AM, Chengjun JIN wrote:
Hi all,
I am trying to add new rows into an existing many to one database via
sqlalchemy ORM.
What I am doing now(it seems working):
# The many to one relationship is:
stock = relationship('Stock', backref=backref('historicalprices',
order_by=id))
# query an object
stock = session.query(Stock).filter_by(code='00001').one()
# add row
stock.historicalprices.append([something])
session.add(stock)
The problem is that it is too slow to query one object. Is there a
fast/standard way to do this?
I'm assuming you have a lot of Stock objects to query. You can get a
bunch of stock objects in batch like this:
stocks = dict(
session.query(Stock.code, Stock).all()
)
for something in somethings:
stock = stocks[something.desired_code]
something.stock = stock # assign on the many-to-one side so that
you don't need to load 'historicalprices'
# add() shouldn't be needed
session.commit()
you can also batch this in subsets of Stock objects:
while somethings:
batch = somethings[0:1000]
somethings = somethings[1000:]
stock_codes = set([something.desired_code for something in batch])
stocks = dict(
session.query(Stock.code,
Stock).filter(Stock.code.in_(stock_codes)).all()
)
for something in batch:
# ... same code as before
Thanks,
Chengjun
--
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
<mailto:sqlalchemy+unsubscr...@googlegroups.com>.
To post to this group, send email to sqlalchemy@googlegroups.com
<mailto:sqlalchemy@googlegroups.com>.
Visit this group at http://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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.