2015-06-06 5 views
5

Ich musste ein Python-Skript von Python2 nach Python 3 umschreiben, um die Probleme zu lösen, die ich am einfachsten hatte. Ich musste von mysqldb zu pymysql wechseln, die die gleiche Syntax zu verwenden schien. Ich habe auf die pymysql-Seite github [1] zugegriffen und in den folgenden Beispielen ist mir aufgefallen, dass bei einem Abfrageergebnis ein Element ein JSON-Objekt zurückgegeben hat. Wenn es jedoch mehr als eins zurückgibt, wird eine Liste zurückgegeben.Warum geben JSON-Abfragen ein Objekt zurück, wenn es ein Element gibt, listet es mehrere auf?

Wäre es nicht konsistenter, immer eine Liste mit 0, 1 oder der Anzahl der Elemente zurückzugeben? Warum ist es so gemacht?

Hinweis: Um dieses Verhalten in pymysql zu vermeiden, nur von den cursorclass Parameter entfernen:

# Connect to the database 
connection = pymysql.connect(host='localhost',user='user', 
passwd='passwd', db='db', charset='utf8mb4', 
cursorclass=pymysql.cursors.DictCursor) 

[1] https://github.com/PyMySQL/PyMySQL/

Antwort

4

Nach JSON-API-Spezifikation, war dieses Verhalten zu einer Bruchänderung v1 durch .0rc1:

BREAKING CHANGE: Singuläre Ressourcenobjekte sollte in der jetzt mit JSON-Objekte dargestellt werden, anstelle von Arrays. Dies ermöglicht symmetrische Darstellungen in Anfrage- und Antwortdokumenten sowie als PUT/POST-Anfragen und PATCH-Operationen. Es vereinfacht auch Implementierungen, die Batch-Operationen nicht unterstützen (d. H. Sie können ein Objekt und nicht ein Array zulassen).

können Sie einen Blick here