C'è il metodo DataFrame.to_sql, ma funziona solo con i database mysql, sqlite e oracle. Non posso passare a questo metodo di connessione postgres o al motore sqlalchemy.Come scrivere DataFrame nella tabella Postgres?
risposta
A partire da panda 0.14 (rilasciato alla fine di maggio 2014), postgresql è supportato. Il modulo sql
ora utilizza sqlalchemy
per supportare diversi tipi di database. È possibile passare un motore sqlalchemy per un database postgresql (vedere docs). Es .:
from sqlalchemy import create_engine
engine = create_engine('postgresql://scott:[email protected]:5432/mydatabase')
df.to_sql('table_name', engine)
Lei ha ragione che in panda fino alla versione 0.13.1 PostgreSQL non è stato sostenuto. Se è necessario utilizzare una versione precedente di panda, questa è una versione corretta di pandas.io.sql
: https://gist.github.com/jorisvandenbossche/10841234.
Ho scritto questo tempo fa, quindi non posso garantire pienamente che funzioni sempre, ma la base dovrebbe essere lì). Se metti il file nella directory di lavoro e di importarlo, allora si dovrebbe essere in grado di fare (dove con
è una connessione PostgreSQL):
import sql # the patched version (file is named sql.py)
sql.write_frame(df, 'table_name', con, flavor='postgresql')
veloce opzione:
Seguendo codice copierà la vostra Pandas DF to postgres DB molto più veloce del metodo df.to_sql e non avrete bisogno di alcun file csv intermedio per memorizzare il df. Creare un motore in base alle specifiche del DB. Crea una tabella nel DB postgres con un numero uguale di colonne come Dataframe (df). I dati in DF avranno inserito nella tabella postgres.
from sqlalchemy import create_engine
import psycopg2
import io
engine=create_engine('postgresql+psycopg2://username:[email protected]:port/database')
conn=engine.raw_connection()
cur = conn.cursor()
output = io.StringIO()
df.to_csv(output, sep='\t', header=False, index=False)
output.seek(0)
contents = output.getvalue()
cur.copy_from(output, ‘table_name’, null="") #null values become ''
conn.commit()
- 1. Postgres espressione matematica calculcated per ogni riga nella tabella
- 2. Tabella Pytables in panda DataFrame
- 3. scrive le righe del dataframe spark come elementi nella tabella dynamoDB
- 4. PHOENIX SPARK - Carica tabella come DataFrame
- 5. Ordine di join tabella in postgres
- 6. Interrogazione efficiente della tabella Postgres multi-partizione
- 7. Postgres: aggiorna tutti i valori nella colonna di uno?
- 8. come utilizzare il tipo di dati di geometria nella tabella di Postgres?
- 9. postgres "ritorni tabella" restituisce una stringa
- 10. Postgres pg_toast in autovacuum - quale tabella?
- 11. Query concede una tabella in postgres
- 12. Unisciti alla tabella postgres su due colonne?
- 13. Come aggiungere una nuova colonna in una tabella dopo la 2a o 3a colonna nella tabella usando postgres?
- 14. Spark SQL - Come scrivere DataFrame in un file di testo?
- 15. Salva spark dataframe come tabella partizionata dinamica in Hive
- 16. Indicizzazione Postgres?
- 17. Come può una funzione memorizzata Postgres restituire una tabella
- 18. Esportare una tabella LaTeX da panda DataFrame
- 19. Come scrivere String.Contains nella dinamica LINQ
- 20. Heroku - come scrivere nella directory "tmp"?
- 21. Postgres annidati se nella query caso
- 22. come scrivere la procedura per inserire i dati nella tabella in phpmyadmin?
- 23. Scrittura del frame di dati nella tabella DB MySql
- 24. Come inserire un dataframe in una tabella di SQL Server?
- 25. Esportare un dataframe di Pandas come immagine di tabella
- 26. Come convertire una tabella html in dataframe panda
- 27. Come scrivere uno script Python che utilizza OpenERP ORM per caricare direttamente nel database Postgres
- 28. Selezionare riga casuale per ogni gruppo in una tabella postgres
- 29. NHibernate Inserisci nella tabella
- 30. Duplica efficacemente alcune righe nella tabella PostgreSQL
Questo è diventato 0.14? – Quant
Sì, e anche 0.15 è già stato rilasciato (release candidate). Aggiornerò la risposta, grazie per avermelo chiesto. – joris
Questo post ha risolto il problema per me: http://stackoverflow.com/questions/24189150/pandas-writing-dataframe-to-other-postgresql-schema – srodriguex