Opened 9 years ago
Closed 9 years ago
#25829 closed Uncategorized (invalid)
Cannot store a dict object into HStoreField
Reported by: | Wael BEN ZID EL GUEBSI | Owned by: | |
---|---|---|---|
Component: | contrib.postgres | Version: | 1.8 |
Severity: | Normal | Keywords: | HStoreField |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
I want to store a tweet status in database, below the model definition
class Status(models.Model): raw = pgfields.HStoreField() # other fields status = Status(raw=dict_object)
and I got this error:
ProgrammingError: ARRAY types integer and integer[] cannot be matched LINE 1: ... 'id_str', 'screen_name', 'name'], ARRAY[9284062, ARRAY[3, 1...
below the data that I want to insert:
{u'contributors': None, u'coordinates': None, u'created_at': u'Sat Nov 28 19:36:10 +0000 2015', u'entities': {u'hashtags': [{u'indices': [67, 78], u'text': u'devfestlon'}], u'media': [{u'display_url': u'pic.twitter.com/jsQ5eqTYvD', u'expanded_url': u'http://twitter.com/gerardsans/status/670682424477679617/photo/1', u'id': 670682412188307462, u'id_str': u'670682412188307462', u'indices': [114, 137], u'media_url': u'http://pbs.twimg.com/media/CU6-GbeWEAYk-2U.jpg', u'media_url_https': u'https://pbs.twimg.com/media/CU6-GbeWEAYk-2U.jpg', u'sizes': {u'large': {u'h': 756, u'resize': u'fit', u'w': 1021}, u'medium': {u'h': 444, u'resize': u'fit', u'w': 600}, u'small': {u'h': 251, u'resize': u'fit', u'w': 340}, u'thumb': {u'h': 150, u'resize': u'crop', u'w': 150}}, u'source_status_id': 670682424477679617, u'source_status_id_str': u'670682424477679617', u'source_user_id': 9284062, u'source_user_id_str': u'9284062', u'type': u'photo', u'url': u'https://t.co/jsQ5eqTYvD'}], u'symbols': [], u'urls': [{u'display_url': u'slides.com/gerardsans/str\u2026', u'expanded_url': u'http://slides.com/gerardsans/streams-in-angular2', u'indices': [90, 113], u'url': u'https://t.co/NhKrNLo0og'}], u'user_mentions': [{u'id': 9284062, u'id_str': u'9284062', u'indices': [3, 14], u'name': u'gerardsans', u'screen_name': u'gerardsans'}, {u'id': 53442117, u'id_str': u'53442117', u'indices': [79, 89], u'name': u'GDG London', u'screen_name': u'gdglondon'}]}, u'favorite_count': 0, u'favorited': False, u'geo': None, u'id': 670687648726519809, u'id_str': u'670687648726519809', u'in_reply_to_screen_name': None, u'in_reply_to_status_id': None, u'in_reply_to_status_id_str': None, u'in_reply_to_user_id': None, u'in_reply_to_user_id_str': None, u'is_quote_status': False, u'lang': u'en', u'metadata': {u'iso_language_code': u'en', u'result_type': u'recent'}, u'place': None, u'possibly_sensitive': False, u'retweet_count': 2, u'retweeted': False, u'retweeted_status': {u'contributors': None, u'coordinates': None, u'created_at': u'Sat Nov 28 19:15:25 +0000 2015', u'entities': {u'hashtags': [{u'indices': [51, 62], u'text': u'devfestlon'}], u'media': [{u'display_url': u'pic.twitter.com/jsQ5eqTYvD', u'expanded_url': u'http://twitter.com/gerardsans/status/670682424477679617/photo/1', u'id': 670682412188307462, u'id_str': u'670682412188307462', u'indices': [98, 121], u'media_url': u'http://pbs.twimg.com/media/CU6-GbeWEAYk-2U.jpg', u'media_url_https': u'https://pbs.twimg.com/media/CU6-GbeWEAYk-2U.jpg', u'sizes': {u'large': {u'h': 756, u'resize': u'fit', u'w': 1021}, u'medium': {u'h': 444, u'resize': u'fit', u'w': 600}, u'small': {u'h': 251, u'resize': u'fit', u'w': 340}, u'thumb': {u'h': 150, u'resize': u'crop', u'w': 150}}, u'type': u'photo', u'url': u'https://t.co/jsQ5eqTYvD'}], u'symbols': [], u'urls': [{u'display_url': u'slides.com/gerardsans/str\u2026', u'expanded_url': u'http://slides.com/gerardsans/streams-in-angular2', u'indices': [74, 97], u'url': u'https://t.co/NhKrNLo0og'}], u'user_mentions': [{u'id': 53442117, u'id_str': u'53442117', u'indices': [63, 73], u'name': u'GDG London', u'screen_name': u'gdglondon'}]}, u'favorite_count': 2, u'favorited': False, u'geo': None, u'id': 670682424477679617, u'id_str': u'670682424477679617', u'in_reply_to_screen_name': None, u'in_reply_to_status_id': None, u'in_reply_to_status_id_str': None, u'in_reply_to_user_id': None, u'in_reply_to_user_id_str': None, u'is_quote_status': False, u'lang': u'en', u'metadata': {u'iso_language_code': u'en', u'result_type': u'recent'}, u'place': None, u'possibly_sensitive': False, u'retweet_count': 2, u'retweeted': False, u'source': u'<a href="http://twitter.com/download/android" rel="nofollow">Twitter for Android</a>', u'text': u'Slides from Asynchronous Data Streams in Angular 2 #devfestlon @gdglondon https://t.co/NhKrNLo0og https://t.co/jsQ5eqTYvD', u'truncated': False, u'user': {u'contributors_enabled': False, u'created_at': u'Sat Oct 06 20:04:48 +0000 2007', u'default_profile': True, u'default_profile_image': False, u'description': u'AngularJS GDE | Coding is fun | Coded something awesome today? | #AngularJS & #JavaScript are the new kings! \u2764 | @angularjs_labs Meetup organiser', u'entities': {u'description': {u'urls': []}, u'url': {u'urls': [{u'display_url': u'medium.com/@gerard.sans', u'expanded_url': u'https://medium.com/@gerard.sans', u'indices': [0, 23], u'url': u'https://t.co/OzlOVVZNqK'}]}}, u'favourites_count': 1237, u'follow_request_sent': False, u'followers_count': 768, u'following': False, u'friends_count': 785, u'geo_enabled': True, u'has_extended_profile': False, u'id': 9284062, u'id_str': u'9284062', u'is_translation_enabled': False, u'is_translator': False, u'lang': u'en', u'listed_count': 102, u'location': u'London \u2602', u'name': u'gerardsans', u'notifications': False, u'profile_background_color': u'C0DEED', u'profile_background_image_url': u'http://abs.twimg.com/images/themes/theme1/bg.png', u'profile_background_image_url_https': u'https://abs.twimg.com/images/themes/theme1/bg.png', u'profile_background_tile': False, u'profile_banner_url': u'https://pbs.twimg.com/profile_banners/9284062/1448587325', u'profile_image_url': u'http://pbs.twimg.com/profile_images/585578015641448448/pn0ZzQuj_normal.png', u'profile_image_url_https': u'https://pbs.twimg.com/profile_images/585578015641448448/pn0ZzQuj_normal.png', u'profile_link_color': u'0084B4', u'profile_sidebar_border_color': u'C0DEED', u'profile_sidebar_fill_color': u'DDEEF6', u'profile_text_color': u'333333', u'profile_use_background_image': True, u'protected': False, u'screen_name': u'gerardsans', u'statuses_count': 1470, u'time_zone': u'Greenland', u'url': u'https://t.co/OzlOVVZNqK', u'utc_offset': -10800, u'verified': False}}, u'source': u'<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>', u'text': u'RT @gerardsans: Slides from Asynchronous Data Streams in Angular 2 #devfestlon @gdglondon https://t.co/NhKrNLo0og https://t.co/jsQ5eqTYvD', u'truncated': False, u'user': {u'contributors_enabled': False, u'created_at': u'Thu Jun 18 08:40:05 +0000 2009', u'default_profile': False, u'default_profile_image': False, u'description': u'Web Specialist - Java and JavaScript technologies - @ZenikaLille', u'entities': {u'description': {u'urls': []}, u'url': {u'urls': [{u'display_url': u'Gillespie59.github.io', u'expanded_url': u'http://Gillespie59.github.io', u'indices': [0, 23], u'url': u'https://t.co/lWeVaL99hb'}]}}, u'favourites_count': 1596, u'follow_request_sent': False, u'followers_count': 865, u'following': False, u'friends_count': 1448, u'geo_enabled': True, u'has_extended_profile': True, u'id': 48291605, u'id_str': u'48291605', u'is_translation_enabled': False, u'is_translator': False, u'lang': u'fr', u'listed_count': 131, u'location': u'Lille - France', u'name': u'Emmanuel DEMEY', u'notifications': False, u'profile_background_color': u'022330', u'profile_background_image_url': u'http://abs.twimg.com/images/themes/theme15/bg.png', u'profile_background_image_url_https': u'https://abs.twimg.com/images/themes/theme15/bg.png', u'profile_background_tile': False, u'profile_banner_url': u'https://pbs.twimg.com/profile_banners/48291605/1427485955', u'profile_image_url': u'http://pbs.twimg.com/profile_images/628190699951923200/vS3yoC1K_normal.jpg', u'profile_image_url_https': u'https://pbs.twimg.com/profile_images/628190699951923200/vS3yoC1K_normal.jpg', u'profile_link_color': u'0084B4', u'profile_sidebar_border_color': u'A8C7F7', u'profile_sidebar_fill_color': u'C0DFEC', u'profile_text_color': u'333333', u'profile_use_background_image': True, u'protected': False, u'screen_name': u'EmmanuelDemey', u'statuses_count': 4723, u'time_zone': u'Paris', u'url': u'https://t.co/lWeVaL99hb', u'utc_offset': 3600, u'verified': False}}
Change History (2)
comment:1 by , 9 years ago
Description: | modified (diff) |
---|
comment:2 by , 9 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
HStoreField (and the Postgres hstore type in general) can't store arbitrarily nested mappings of arbitrary types, only single level mappings of string to string (as noted in the first sentence of the HStoreField docs). You may want a JSONField instead.