Bière artisanale – Pourquoi ma table chargée dans postgresql n’est pas ordonnée comme elle l’était en Python? – Bière blonde

Publié le 07 juin 2020 par Cafesecret

J'ai créé une liste de dictionnaires à partir d'un site Web de bière API et je souhaite charger toutes les données dans la table postgresql. A cet effet, j'ai créé une table ("whole_table") avec toutes les colonnes et en utilisant ma propre fonction ( filling_out_whole_table()) a inséré toutes les données dans ce tableau. Comme ça:

with psycopg2.connect(host="127.0.0.1", database="beer", user="postgres") as connection: with connection.cursor() as cursor: cursor.execute(""" DROP TABLE IF EXISTS whole_table; CREATE TABLE whole_table ( id INTEGER PRIMARY KEY, name TEXT, tagline TEXT, first_brewed TEXT, description TEXT, image_url TEXT, abv DECIMAL, ibu DECIMAL, target_fg DECIMAL, target_og DECIMAL, ebc DECIMAL, srm DECIMAL, ph DECIMAL, attenuation_level DECIMAL, brewers_tips TEXT, contributed_by TEXT ); """) filling_out_whole_table(table = whole_table, cursor = cursor) 

Et c'est la fonction filling_out_whole_table():

def filling_out_whole_table(table, cursor) -> None: my_list_of_dictonaries = [values for key, values in table.to_dict('index').items()] psycopg2.extras.execute_values ( cursor, """ INSERT INTO whole_table VALUES %s;""", (( beer['id'], beer['name'], beer['tagline'], beer['first_brewed'], beer['description'], beer['image_url'], beer['abv'], beer['ibu'], beer['target_fg'], beer['target_og'], beer['ebc'], beer['srm'], beer['ph'], beer['attenuation_level'], beer['brewers_tips'], beer['contributed_by'], )for beer in my_list_of_dictonaries), page_size= 1000 ) 

Après que tout a été chargé, j'ai vérifié l'ordre de mes colonnes dans ma base de données et j'ai vu que certains id les champs ne sont pas classés, c'est-à-dire qu'ils ne sont pas en place où ils étaient avant l'insertion. Ma question est donc: est-ce normal? Ou peut-être que j'ai fait une erreur quelque part?