A documentação do Pandas contém vários exemplos de práticas recomendadas para trabalhar com dados armazenados em vários formatos.
No entanto, não consigo encontrar bons exemplos para trabalhar com bancos de dados como o MySQL, por exemplo.
Alguém pode me apontar para links ou dar alguns trechos de código de como converter os resultados da consulta usando mysql-python para quadros de dados no Pandas de forma eficiente?
Respostas:
Como Wes diz, read_sql de io / sql fará isso, uma vez que você tenha uma conexão de banco de dados usando uma biblioteca compatível com DBI. Podemos ver dois exemplos curtos usando as bibliotecas
MySQLdb
ecx_Oracle
para se conectar ao Oracle e ao MySQL e consultar seus dicionários de dados. Aqui está o exemplo paracx_Oracle
:E aqui está o exemplo equivalente para
MySQLdb
:fonte
Para leitores recentes desta questão: os pandas têm o seguinte aviso em seus documentos para a versão 14.0 :
E:
Isso torna muitas das respostas aqui desatualizadas. Você deve usar
sqlalchemy
:fonte
engine.execute("select * FROM mytable")
com o tempo que leva para executarpd.read_sql_query('SELECT * FROM mytable', engine)
Para registro, aqui está um exemplo usando um banco de dados sqlite:
fonte
index_col='timestamp'
emframe_query
.Eu prefiro criar consultas com SQLAlchemy e, em seguida, fazer um DataFrame a partir dele. SQLAlchemy torna mais fácil combinar condições SQL Pythonically se você pretende misturar e combinar coisas repetidamente.
fonte
dialect+driver://user:pwd@host:port/db
Exemplo de MySQL:
fonte
frame_query
agora está obsoleto. Agora usepd.read_sql(query, db)
.A mesma sintaxe funciona para o servidor MS SQL usando podbc também.
fonte
E é assim que você se conecta ao PostgreSQL usando o driver psycopg2 (instale com "apt-get install python-psycopg2" se você estiver no sistema operacional derivado do Debian Linux).
fonte
Para Sybase, o seguinte funciona (com http://python-sybase.sourceforge.net )
fonte
pandas.io.sql.frame_query
está obsoleto. Use em seupandas.read_sql
lugar.fonte
importar o módulo
conectar
Isso funciona bem e usando pandas.io.sql frame_works (com o aviso de descontinuação). O banco de dados usado é o banco de dados de amostra do tutorial do mysql.
fonte
Isso deve funcionar muito bem.
fonte
Isso me ajudou a me conectar a AWS MYSQL (RDS) a partir da função lambda baseada em python 3.x e carregar em um DataFrame do pandas
fonte
Para usuários Postgres
fonte