1. ホーム
  2. python

[解決済み] sqliteデータベースの開き方とpandasデータフレームへの変換方法

2023-06-01 16:35:59

質問

あるデータをSQLiteデータベース(data.db)としてダウンロードしました。このデータベースをpythonで開き、pandas dataframeに変換したいです。

これは私がやったことです。

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データベースをpandasのdataframeに変換する方法

どのように解決するのですか?

sqliteはPython標準ライブラリの一部であり、SQLiteデータベースへの素晴らしく簡単なインタフェースであるにもかかわらず、Pandasのチュートリアルでは 状態 :

注意 read_sql_table() を使うには、SQLAlchemy のオプションの依存関係がインストールされている必要があります。 オプションの依存関係がインストールされている必要があります。

しかし、SQLAlchemyのインストールを回避したい場合、Pandasはまだsqlite3アクセスをサポートしています。

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

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

とあるように ここで のように、使用するテーブルの名前をあらかじめ知っておく必要があります。