Печать результатов данных из postgresql в фрейм данных panda

#python #postgresql

Вопрос:

Я пытаюсь распечатать результаты объединенной таблицы из postgresql в python. Однако, когда я пытаюсь распечатать результаты, появляется таблица, но я получаю данные NaN. Кто-нибудь может помочь?

 conn = psy.connect( dbname = "funda_project", host = "localhost", user =  "postgres", password = "ledidhima2021.")  cursor = conn.cursor() conn.commit()  createjointable2 = '''SELECT(  distance_data."Municipality",  distance_data."Childcare/Nursery",  distance_data."Leisure/Culture/Library",  sales_details."Purchase_price",  sales_details."Publication_date",  sales_details."Date_of_signature",  house_details."Type_of_house",  house_details."Object_categorie",  house_details."Construction_year",  house_details."Energy_label_class",  demo_data."Age_Group_Relation_(15-20)",  demo_data."Age_Group_Relation_(20-25)",  demo_data."Age_Group_Relation_(25-45)")  FROM "distance_data" INNER JOIN "zip_data"   ON "distance_data"."Municipality" = "zip_data"."Municipality"  INNER JOIN "demo_data"   ON "zip_data"."Municipality" = "demo_data"."Municipality" INNER JOIN "sales_details"  ON "zip_data"."globalId" = "sales_details"."GlobalID" INNER JOIN "house_details"  ON "zip_data"."globalId" = "house_details"."GlobalID" ;'''  cursor.execute(createjointable2);  from pandas import DataFrame eri= pd.DataFrame(cursor.fetchall()) datalist = list(eri) results = pd.DataFrame (eri, columns = ["Municipality", "Childcare/Nursery",  "Leisure/Culture/Library", "Purchase_price", "Publication_date", "Date_of_signature",  "Type_of_house", "Object_categorie", "Construction_year", "Energy_label_class",  "Age_Group_Relation_(15-20)", "Age_Group_Relation_(20-25)", "Age_Group_Relation_(25-45)"]) results   

Ответ №1:

Pandas имеет встроенную функцию чтения SQL-запросов pd.read_sql_query(query, connection) , которая присваивает возвращаемое табличное значение фрейму данных.

 dataframe = pd.read_sql_query("SELECT * FROM table;", conn)  

conn это объект подключения, который вы создали и который также есть в вашем коде.

Другой способ-это почти то, что вы тоже пробовали:

 from pandas import DataFrame df = DataFrame(cursor.fetchall()) df.columns = cursor.keys()