2016-03-16 71 views
7

我已經下載了一些數據作爲sqlite數據庫(data.db),我想在python中打開這個數據庫,然後將其轉換爲熊貓數據框。如何打開並將sqlite數據庫轉換爲熊貓數據框

這是迄今爲止我已經做

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) 

但其引發此錯誤

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() 

如何轉換SQLite數據庫,以大熊貓數據幀

回答

3

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

打開到數據庫的連接。沒有記錄查詢到此。所以你必須事後執行一個查詢並將其提供給熊貓數據框構造函數。

應該類似於此

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) 

我沒有與SQL命令真正牢固,所以你應該檢查查詢的正確性。應該是數據庫中表的名稱。

24

儘管SQLite是Python標準庫的一部分,是一個很好的和簡單的界面,SQLite數據庫,熊貓教程狀態:

注爲了使用read_sql_table(),您必須有SQLAlchemy的 可選依賴項已安裝。 http://pandas.pydata.org/pandas-docs/stable/io.html#reading-tables

但熊貓仍然支持sqlite3的訪問,如果你想避免安裝的SQLAlchemy:

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

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

但你需要事先知道所使用的表的名稱:

希望它可以幫助!

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

0

搜索sqlalchemyengine和數據庫名稱中谷歌(源碼在這種情況下):

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) 
相關問題