Обратный кадр данных Pandas из запроса PostgreSQL с sqlalchemy

Я хочу запросить базу данных PostgreSQL и вернуть результат в виде кадра данных Pandas.

Я использую sqlalchemy для создания соединения с базой данных:

 from sqlalchemy import create_engine engine = create_engine('postgresql://user@localhost:5432/mydb') 

Я пишу файл данных Pandas в таблицу базы данных:

 i=pd.read_csv(path) i.to_sql('Stat_Table',engine,if_exists='replace') 

Основываясь на документах , выглядит так: pd.read_sql_query () должен принять механизм SQLAlchemy:

 a=pd.read_sql_query('select * from Stat_Table',con=engine) 

Но это порождает ошибку:

 ProgrammingError: (ProgrammingError) relation "stat_table" does not exist 

Я использую версию Pandas 0.14.1.

Каков правильный способ сделать это?

2 Solutions collect form web for “Обратный кадр данных Pandas из запроса PostgreSQL с sqlalchemy”

Вас укушают проблемы с чувствительностью к случаю (в) с PostgreSQL. Если вы укажете имя таблицы в запросе, она будет работать:

 df = pd.read_sql_query('select * from "Stat_Table"',con=engine) 

Но лично я бы посоветовал всегда использовать имена таблиц нижнего регистра (и имена столбцов), а также при написании таблицы в базе данных для предотвращения таких проблем.


В документах PostgreSQL ( http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS ):

Вычисление идентификатора также делает его чувствительным к регистру, тогда как некотируемые имена всегда складываются в нижний регистр

Объяснить немного больше: вы создали таблицу с именем Stat_Table в базе данных (и sqlalchemy укажет это имя, поэтому оно будет записано как «Stat_Table» в базе данных postgres). При выполнении запроса 'select * from Stat_Table' имя без stat_table будет преобразовано в нижний регистр stat_table , и вы получите сообщение о том, что эта таблица не найдена.

См. Например, также Идентификаторы столбцов PostgreSQL с учетом регистра?

В сообщении об ошибке сообщается, что таблица с именем:

 stat_table 

не существует ( отношение – это таблица в postgres). Поэтому, конечно, вы не можете выбирать из него строки. Проверьте свой db после выполнения:

 i.to_sql('Stat_Table',engine,if_exists='replace') 

и посмотреть, была ли создана таблица с таким именем в вашем db.

Когда я использую ваше заявление для чтения:

 df = pd.read_sql_query('select * from Stat_Table',con=engine) 

Я возвращаю данные из postgres db, поэтому нет ничего плохого в этом.

  • Лучший способ интеграции SqlAlchemy в проект Django
  • Выполните какой-либо код, когда действительно удалено удаление объекта SQLAlchemy
  • SQLAlchemy JSON как blob / text
  • SQLAlchemy, как фильтровать по детям от многих до многих
  • чтение подчиненного устройства, чтение-запись
  • SQLAlchemy связывание ассоциации прокси для правнуков?
  • Избегайте дубликатов с завода factory_boy
  • Динамически настраивать __tablename__ для sharding в SQLAlchemy?
  • Как автоматически отражать базу данных в sqlalchemy декларативной?
  • Pandas записывает данные в другую схему postgresql
  • SqlAlchemy и многопроцессорность
  •  
    Interesting Posts for Van-Lav

    setup.py проверить, существует ли зависимость библиотеки, отличной от python

    Получите данные из Excel и используйте эти входы в скрипте python

    Определяет, установлен ли корневой журнал на уровень DEBUG в Python?

    Какую структуру фальшивых объектов я должен использовать при разработке на Python в Google App Engine?

    Использование .pth файлов

    Как сегментировать изогнутый стержень для расчета угла?

    Параметры MiniBatchKMeans

    Python работает, но eclipse показывает ошибку – Синтаксическая ошибка при обнаружении кортежа

    Не удается заставить Elasticsearch работать с Django

    Существуют ли какие-либо инструменты для миграции схемы для баз данных NoSQL?

    Каковы значения веса для использования в numpy polyfit и какова ошибка пригонки

    Должен ли я вернуть пустой символ вместо «Нет»?

    Ошибка установки с помощью ipython на macbook

    Получить время создания файла с помощью Python on linux

    Импорт модулей в Python – лучшая практика

    Python - лучший язык программирования в мире.