#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()