Niektóre bazy danych, takie jak Sqlite3, umożliwiają zdefiniowanie funkcji konwertera i adaptera, dzięki czemu można pobierać tekst jako str zamiast unicode . Niestety MongoDB nie zapewnia tej opcji dla żadnego z powszechnie potrzebnych typów, takich jak str, dziesiętny lub datetime:
- http://api.mongodb.org/python/current/tutorial.html#a-note-on-unicode-strings
- http://api.mongodb.org/python/current/faq.html#how-can-i-store-decimal-decimal-instances
- http://api.mongodb.org/python/current/faq.html#how-can-i-save-a-datetime-date-instance
Po wyeliminowaniu opcji Mongo pozostaje pisanie kodu w Pythonie, aby wykonać konwersję po pobraniu danych. Możesz napisać funkcję rekurencyjną, która przemierza wynik, aby przekonwertować każde pole.
Jako szybką i brudną alternatywę, oto mały hack, który może się przydać:
>>> import json, ast
>>> r = {u'name': u'A', u'primary_key': 1}
>>> ast.literal_eval(json.dumps(r))
{'name': 'A', 'primary_key': 1}