On 7/19/15 4:58 PM, Ivan Evstegneev wrote:
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.

sure, those are the python drivers. SQLAlchemy rides on top of those, like in the diagram at http://docs.sqlalchemy.org/en/rel_1_0/intro.html.

That diagram is at the base of my "Intro to SQLAlchemy" video which might be worth it if you have the time, at http://www.sqlalchemy.org/library.html#introductiontosqlalchemy




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

        |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+...@googlegroups.com <javascript:>.
    To post to this group, send email to 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 <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