Hi Ivan, Maybe you may iterate over the system_data[table_name] to execute your conn.execute.
2015-07-19 17:58 GMT-03:00 Ivan Evstegneev <bravo....@gmail.com>: > Thanks for the reply. > > >>if by "online examples" you mean that you're just reading blog posts and > things trying to find a code snippet that matches what you're doing, then > yes, that's a wasteful >>use of time :) > > Wrong! ^_^ I'm not a lazy one. > > I'm also reading sqla official documentation, but most of the time it's > *difficult > to follow*. Maybe cause of lack of the experience. > > Furthermore, I got the "dataset" source code in order to understand how > they combined all the stuff together. > > Additionally I saw, many tutorials with python drivers like mysqldb, > pymysql, where you need just to construct a string (using "format") and > then pass it as sql query to make the job done. > > > Still, haven't seen any examples of how to use sqlalchemy, in order to > load the data in the way I've described. Maybe my attitude about "doing > stuff this way" is wrong... > Duh... feeling dumb... > > > > Still, many thanks for your answer. )))) > > > On Sunday, July 19, 2015 at 11:46:46 PM UTC+3, Michael Bayer wrote: > >> >> >> On 7/19/15 4:33 PM, Ivan Evstegneev wrote: >> >> Someone? Please. >> >> On Sunday, July 19, 2015 at 6:02:13 PM UTC+3, Ivan Evstegneev wrote: >>> >>> >>> I have my data loaded from excel files and organized as python dict >>> where each key is database table name and its value is defined as list of >>> dictionaries (the rows) >>> >>> >>> system_data = >>> >>> {table_name1:[{'col_1':val1, 'col2': val1...},{'col_1':val2, 'col2': >>> val2..}..], >>> table_name2:[{},{}..],[{},{}..]..} >>> >>> This data needs to be loaded into existing database while picking >>> table_names keys and values from system_data. >>> >>> Additionally I use ordered_table list which I've created in specific >>> order to avoid FK problems while data is being loaded. >>> >>> Here is the code (one of the 1000 versions I've tried): >>> >>> >>> from sqlalchemy import create_enginefrom sqlalchemy.sql import insert >>> def alchemy_load(): >>> system_data = load_current_system_data() >>> engine = >>> create_engine('mysql+pymysql://username:password@localhost/my_db') >>> conn = engine.connect() >>> for table_name in ordered_tables: >>> conn.execute(insert(table_name, system_data[table_name])) >>> print("System's Data successfully loaded into Database!") >>> >>> >>> This function yield a following error: >>> >>> "TypeError: 'method' object is not iterable" >>> >>> >>> >>> I've wasted almost all day on this stuff ((( >>> >>> All the online examples describe the situation when a user uses MetaData >>> and creates its own tables... There is nothing about how to actually add >>> data into existing tables. >>> >>> There is a solution to my problem using "dataset" library. >>> >> >> Your example illustrates some basic misunderstandings about how the >> insert() function is used; you need to pass it the kinds of objects it >> expects, in this case not the string name of a table but rather a Table >> object, as well as data as key/value arguments via the values() method. >> >> Re: wasting all day, if by "online examples" you mean that you're just >> reading blog posts and things trying to find a code snippet that matches >> what you're doing, then yes, that's a wasteful use of time :) You'd be >> better off learning the insert() construct fully so that you can use it in >> a way specific to what you're doing, and that means giving the Core >> tutorial a good read >> http://docs.sqlalchemy.org/en/rel_1_0/core/tutorial.html. That said, >> dataset is built on SQLAlchemy, so if it does what you need, there's no >> reason you need to switch off of it. >> >> >> >>> The code: >>> >>> >>> import dataset >>> def current_data(): >>> db = dataset.connect(url='mysql+pymysql://user:pass@localhost/my_db') >>> system_data = load_current_system_data() >>> >>> for table_name in ordered_tables: >>> db[table_name].insert_many(system_data[table_name]) >>> print("System's Data successfully loaded into Database!") >>> >>> BUT, I have no idea how to implement this code using sqlalchemy... >>> >>> >>> >>> Any help will be appreciated. >>> >> -- >> 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. >> To post to this group, send email to sqlal...@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. > -- 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.