Expasys BI
Руководство пользователя (версия 2023.2)
×

Извлечение данных

 
Для начала импортируйте необходимые библиотеки - Pandas для работы с таблицами и Psycopg2для работы с СУБД PostgreSQL.
import pandas as pd
import psycopg2
Далее нужно подключиться к базе данных с помощью psycopg2.connect().
con = psycopg2.connect(database='database',
   user='user',
   password='password',
   host='host',
   port='port')
cur = con.cursor()
Если вы не знаете точное название таблицы, которая вам нужна, можно получить список доступных таблиц, используя следующий скрипт.
cur.execute("SELECT table_name FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','pg_catalog')")
tables = cur.fetchall()
tables
Чтобы выгрузить таблицу из базы данных можно использовать следующий шаблон, в котором вместо user и TableName нужно вписать имя пользователя, указанное в параметрах подключения к СУБД и название нужной вам таблицы из списка доступных таблиц соответственно:
cur.execute('SELECT * FROM "TableName"')
tupples = cur.fetchall()
cur.execute("SELECT column_name FROM information_schema.columns WHERE table_name='TableName'")
columns=cur.fetchall()
Пример получения таблицы со списком анкет:
cur.execute('SELECT * FROM "Questionnaires"')
tupples = cur.fetchall()
cur.execute("SELECT column_name FROM information_schema.columns WHERE table_name='Questionnaires'")
columns=cur.fetchall()
questionnaires=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
Пример получения таблицы с результатами тестирований:
cur.execute('SELECT * FROM "TestResultTexts"')
tupples = cur.fetchall()
cur.execute("SELECT column_name FROM information_schema.columns WHERE table_name='TestResultTexts'")
columns=cur.fetchall()
test_result_texts=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
Пример получения таблицы со списком новостей:
cur.execute('SELECT * FROM "News"')
tupples = cur.fetchall()
cur.execute("SELECT column_name FROM information_schema.columns WHERE table_name='News'")
columns=cur.fetchall()
news=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])