2015-06-06 24 views
5

Musiałem przepisać skrypt Pythona z Pythona do Pythona 3, aby rozwiązać problemy z kodowaniem, które miałem najłatwiej. Musiałem przejść od mysqldb do pymysql, który wydawał się używać tej samej składni. Uzyskałem dostęp do strony github [1] pymysqla i po tych przykładach zauważyłem, że gdy wynik zapytania był jednym elementem, zwrócił obiekt JSON, ale gdy zwraca więcej niż jeden, zwraca listę.Dlaczego zapytania JSON zwracają obiekt, jeśli istnieje jeden element, lista, jeśli jest więcej niż jeden?

Czy nie byłoby bardziej spójne zwracanie zawsze listy z 0, 1 lub dowolną liczbą elementów? Dlaczego tak się dzieje?

Uwaga: W celu uniknięcia tego problemu w pymysql prostu usunąć parametr cursorclass z:

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

Odpowiedz

4

według specyfikacji API JSON zachowanie to było powodu niszczącego zmiany V1 .0rc1:

BREAKING CHANGE: obiekty zasobów Singular powinien być teraz być reprezentowana JSON obiektów zamiast tablic. Umożliwia to reprezentację symetryczną w dokumentach żądania i odpowiedzi, a także jako żądania PUT/POST i operacje PATCH. Upraszcza również implementacje , które nie obsługują operacji wsadowych (tj. Mogą zezwalać na obiekt, a nie na tablicę).

Można spojrzeć here

Powiązane problemy