Dokumentacja Pandas zawiera wiele przykładów najlepszych praktyk dotyczących pracy z danymi przechowywanymi w różnych formatach.
Nie mogę jednak znaleźć żadnych dobrych przykładów pracy z bazami danych, takimi jak na przykład MySQL.
Czy ktoś może wskazać mi linki lub podać fragmenty kodu, jak wydajnie konwertować wyniki zapytań za pomocą mysql-python na ramki danych w Pandas?
Odpowiedzi:
Jak mówi Wes, zrobi to read_sql io / sql, gdy już uzyskasz połączenie z bazą danych za pomocą biblioteki kompatybilnej z DBI. Możemy spojrzeć na dwa krótkie przykłady przy użyciu bibliotek
MySQLdb
icx_Oracle
do łączenia się z Oracle i MySQL i wysyłania zapytań do ich słowników danych. Oto przykład dlacx_Oracle
:A oto równoważny przykład dla
MySQLdb
:źródło
Dla niedawnych czytelników tego pytania: pandy mają następujące ostrzeżenie w swoich dokumentach dla wersji 14.0 :
I:
To sprawia, że wiele odpowiedzi tutaj jest nieaktualnych. Powinieneś użyć
sqlalchemy
:źródło
engine.execute("select * FROM mytable")
z czasem potrzebnym do wykonaniapd.read_sql_query('SELECT * FROM mytable', engine)
Dla przypomnienia, oto przykład użycia bazy danych sqlite:
źródło
index_col='timestamp'
wframe_query
.Wolę tworzyć zapytania za pomocą SQLAlchemy , a następnie tworzyć z niego DataFrame. SQLAlchemy ułatwia łączenie warunków SQL w języku Python, jeśli zamierzasz ciągle mieszać i dopasowywać różne elementy.
źródło
dialect+driver://user:pwd@host:port/db
Przykład MySQL:
źródło
frame_query
jest teraz przestarzała. Teraz użyjpd.read_sql(query, db)
zamiast tego.Ta sama składnia działa również dla serwera Ms SQL przy użyciu podbc.
źródło
W ten sposób łączysz się z PostgreSQL za pomocą sterownika psycopg2 (zainstaluj za pomocą "apt-get install python-psycopg2", jeśli używasz pochodnego systemu operacyjnego Debian Linux).
źródło
Dla Sybase następujące prace (z http://python-sybase.sourceforge.net )
źródło
pandas.io.sql.frame_query
jest przestarzałe. Użyjpandas.read_sql
zamiast tego.źródło
zaimportuj moduł
połączyć
Działa to dobrze i przy użyciu pandas.io.sql frame_works (z ostrzeżeniem o wycofaniu). Użyta baza danych to przykładowa baza danych z samouczka mysql.
źródło
To powinno działać dobrze.
źródło
Pomogło mi to połączyć się z AWS MYSQL (RDS) z funkcji lambda opartej na pythonie 3.x i załadować do pandy DataFrame
źródło
Dla użytkowników Postgres
źródło