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

    |fromsqlalchemy importcreate_engine fromsqlalchemy.sql importinsert
    defalchemy_load():system_data =load_current_system_data()engine
    =create_engine('mysql+pymysql://username:password@localhost/my_db')conn
    =engine.connect()fortable_name
    
inordered_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:

    |importdataset defcurrent_data():db
    =dataset.connect(url='mysql+pymysql://user:pass@localhost/my_db')system_data
    =load_current_system_data()fortable_name
    
inordered_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+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.

Reply via email to