it-swarm.com.de

So öffnen und konvertieren Sie die sqlite-Datenbank in einen Pandas-Datenrahmen

Ich habe einige Daten als sqlite-Datenbank (data.db) heruntergeladen und möchte diese Datenbank in Python öffnen und dann in Pandas-Datenrahmen konvertieren.

Das habe ich bisher gemacht

import sqlite3
import pandas    
dat = sqlite3.connect('data.db') #connected to database with out error
pandas.DataFrame.from_records(dat, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)

Aber es ist dieser Fehler

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 980, in from_records
    coerce_float=coerce_float)
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 5353, in _to_arrays
    if not len(data):
TypeError: object of type 'sqlite3.Connection' has no len()

Wie konvertiert man eine sqlite-Datenbank in einen Pandas-Datenrahmen?

16
Eka

Obwohl sqlite Teil der Python Standard Library ist und eine nette und einfache Schnittstelle zu SQLite-Datenbanken ist, erklärt das Pandas-Tutorial:

Hinweis Um read_sql_table () verwenden zu können, benötigen Sie die SQLAlchemy optionale Abhängigkeit installiert . http://pandas.pydata.org/pandas-docs/stable/io.html#reading-tables

Pandas unterstützt jedoch weiterhin den Zugriff auf sqlite3, wenn Sie die Installation von SQLAlchemy vermeiden möchten:

import sqlite3
import pandas as pd
# Create your connection.
cnx = sqlite3.connect('file.db')

df = pd.read_sql_query("SELECT * FROM table_name", cnx)

Sie müssen jedoch den Namen der verwendeten Tabelle im Voraus kennen.

Ich hoffe es hilft!

http://pandas.pydata.org/pandas-docs/stable/io.html#sqlite-fallback

41
Mike

Die Linie

dat = sqlite3.connect('data.db')

öffnet eine Verbindung zur Datenbank. Es werden keine Datensätze abgefragt. Sie müssen also anschließend eine Abfrage ausführen und diese dem Pandas Dataframe-Konstruktor zur Verfügung stellen.

Es sollte ähnlich aussehen

import sqlite3
import pandas as pd

dat = sqlite3.connect('data.db')
query = dat.execute("SELECT * From <DATABASENAME>")
cols = [column[0] for column in query.description]
results= pd.DataFrame.from_records(data = query.fetchall(), columns = cols)

Ich bin nicht sehr fest mit SQL-Befehlen, daher sollten Sie die Richtigkeit der Abfrage überprüfen. sollte der Name der Tabelle in Ihrer Datenbank sein.

5
RaJa

Suchen Sie nach sqlalchemy, engine und dem Datenbanknamen in google (in diesem Fall sqlite):

import pandas as pd
import sqlalchemy

db_name = "data.db"
table_name = "LITTLE_BOBBY_TABLES"

engine = sqlalchemy.create_engine("sqlite:///%s" % db_name, execution_options={"sqlite_raw_colnames": True})
df = pd.read_sql_table(table_name, engine)
1
user3226167

ich habe meine Daten in database.sqlite gespeichert

import sqlite3
con=sqlite3.connect("database.sqlite")

data=pd.read_sql_query("SELECT * FROM Reviews",con)
print(data)
1
vignesh babu