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.