2015-06-06 11 views
5

Ho dovuto riscrivere uno script python da python2 a python 3 per risolvere i problemi di codifica che avevo nel modo più semplice. Ho dovuto passare da mysqldb a pymysql che sembrava utilizzare la stessa sintassi. Ho visitato il sito github di pymysql [1] e gli esempi seguenti ho notato che quando il risultato della query era un elemento restituiva un oggetto JSON ma quando ne restituiva più di uno, restituisce una lista.Perché le query JSON restituiscono l'oggetto se c'è un elemento, elencarlo se più di uno?

Non sarebbe più coerente restituire sempre una lista con 0, 1 o qualsiasi numero di elementi? Perché è fatto in questo modo?

Nota: per evitare questo comportamento in pymysql solo rimuovere il parametro cursorclass da:

# 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/

risposta

4

Secondo specifica API JSON, questo comportamento è dovuto ad un cambiamento di rottura in v1 .0rc1:

ROTTURA CHANGE: oggetti risorsa Singular occorre ora essere rappresentata con JSON oggetti invece di array. Ciò consente rappresentazioni simmetriche nei documenti di richiesta e risposta, nonché come richieste PUT/POST e operazioni PATCH. Semplifica anche le implementazioni che non supportano le operazioni batch (ad esempio possono consentire un oggetto e non un array).

Si può avere uno sguardo here

Problemi correlati