'How to solve Unhashable type: 'DataFrame'? when saving to SQL?
I have the following DataFrame:
df_tweets = pd.DataFrame({'source': ['Twitter Web Client', 'Twitter Web Client', 'Twitter Web Client', 'Twitter Web Client', 'Twitter Web Client'],
'id_str': [6971079756, 6312794445, 6090839867, 5775731054, 5364614040],
'text': ['From Donald Trump: Wishing everyone a wonderful holiday & a happy, healthy, prosperous New Year. Let’s think like champions in 2010!',
'My International Tower in Chicago ranked 6th tallest building in world by Council on Tall Buildings & Urban Habitat http://bip.ly/sqvQq',
'Wishing you and yours a very Happy and Bountiful Thanksgiving!',
"Donald Trump Partners with TV1 on New Reality Series Entitled, Omarosa's Ultimate Merger: http://turl.com/yk5m3lc",
'--Work has begun, ahead of schedule, to build the greatest golf course in history: Trump International – Scotland.'],
'created_at': ['2009-12-23T17:38:18Z', '2009-12-03T19:39:09Z', '2009-11-26T19:55:38Z', '2009-11-16T21:06:10Z', '2009-11-02T14:57:56Z'],
'retweet_count': [28, 33, 13, 5, 7],
'in_reply_to_user_id_str': [np.nan, np.nan, np.nan, np.nan, np.nan],
'favorite_count': [12, 6, 11, 3, 6],
'is_retweet': [False, False, False, False, False],
'key': [1, 2, 3, 4, 5]})
And I want to save it to a database (SQLite). So I followed these steps:
engine = create_engine('sqlite:///tweets.db', echo=True)
sqlite_connection = engine.connect()
df_tweets.to_sql(df_tweets, sqlite_connection, if_exists='fail')
But I get this error:
TypeError: unhashable type: 'DataFrame'
I tried to solve it looking for solutions on Internet, and I've found that it could be that one of my columns is a list (which is unhasheable). So I tried it to discover if one of the columns was a list or a dict:
df_tweets.applymap(lambda x: isinstance(x, dict) or isinstance(x, list)).all()
source False
id_str False
text False
created_at False
retweet_count False
in_reply_to_user_id_str False
favorite_count False
is_retweet False
key False
dtype: bool
But no, I don't see that any column is a list. I'm stuck at solving this problem, please could you guide me what I have to do?
Solution 1:[1]
I think you are not using correctly the to_sql, as you can see on this screen : 
'products' is the name of the table you want to insert your data and not your dataframe
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | DataSciRookie |
