Sweet! It was the commit. Thanks!
Greg-- On Thursday, December 3, 2015 at 10:48:45 AM UTC-6, Michael Bayer wrote: > > > > On 12/03/2015 11:28 AM, Horcle wrote: > > I am trying to do a bulk insert of a large list of dictionaries of the > form: > > > > results = [{'attribute': u'SEX', 'value_d': 0.0, 'value_s': u'M', > > 'sid': 1L}, > > {'attribute': u'SEX', 'value_d': 0.0, 'value_s': u'M', > > 'sid': 2L}, > > {'attribute': u'SEX', 'value_d': 0.0, 'value_s': u'M', > > 'sid': 3L}, > > {'attribute': u'SEX', 'value_d': 0.0, 'value_s': u'M', > > 'sid': 4L}, > > ... > > ] > > > > After reading about 'executemany' and bulk_insert_mappings, I decided to > > try the later, since it looked much simpler to work with. > > > > Here is the code to execute this, with the naive assumption that this > > would work with a list of dictionaries: > > > > Session = sessionmaker(bind=engine) > > s = Session() > > s.bulk_insert_mappings(Results,results) > > > > My Results model is: > > > > class Results(db.Model): > > __tablename__ = 'results' > > id = Column(Integer, primary_key=True, autoincrement=True) > > sid = Column(Integer) > > attribute = Column(String(2048)) > > value_s = Column(String(2048)) > > value_d = Column(Float) > > > > db is the SQLAlchemy object for my app: > > > > db = SQLAlchemy(app) > > > > No errors are thrown when I run this, but the data are not being > inserted. > > 1. are you emitting s.commit() to commit your transaction? > > 2. what's in that "results" object? it should definitely do something > unless the collection is empty. > > 3. turn on echo=True on your engine to see what SQL is emitted. > > Also note that the "SQLAlchemy(app)" object there is a flask thing, that > provides its own Session. There's not much reason for it if you are > making a Session() yourself with an "engine" from somewhere. > > > > > > > > > > > End of naive assumption: The documentation says I need a "list of > > mapping dictionaries." I assume since my dictionaries are key-value > > pairs, I need to do something like > > > > dict = {k:v for k,v in (x.split(':') for x in results) } > > > > I tried this, but I then got an error that > > > > AttributeError: 'dict' object has no attribute 'split' > > > > Not sure where to go with this now... > > > > Thanks in advance! > > > > Greg-- > > > > -- > > 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+...@googlegroups.com <javascript:> > > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>. > > To post to this group, send email to sqlal...@googlegroups.com > <javascript:> > > <mailto:sqlal...@googlegroups.com <javascript:>>. > > 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.