2017-07-03 24 views
1

私はsqlite3をPythonで使用しています。python sqlite 'NoneType'オブジェクトは反復可能ではありません

私はデータベースにテーブルを作成しました。テーブルには、いくつかのNULL

import sqlite3 
engine = sqlite3.connect('Practice') 
BST = pd.DataFrame({'N':[1,3,5,7,2,6,4,8,10,12,14,9,13,11,15],'P':[2,2,6,6,4,4,15,9,9,13,13,11,11,15,'NULL']}) 
BST.to_sql(name = "BST", con=engine, if_exists = 'replace', index = False) 

は、その後、私は

pd.read_sql_query("CREATE VIEW V1 as select P from BST",con=engine) 

このテーブルのビューを作成したい持っていますが、それは誤りTypeError: 'NoneType' object is not iterableをスローします。

テーブルにNULL値が含まれている場合、sqliteでテーブルのビューを作成する方法はありますか?

+2

私はあなたがSQLを読み、同じ時間に – PRMoureu

+1

@PRMoureuのおかげでビューを作成することはできませんと思います!だから 'df.to_sql()'はデータベースに実際のテーブルを作成するか、後で参照できるデータベースにビューを作成する(実際のテーブルを作成するよりも少ないメモリを占有する)ようなpandas関数です。am私は正しい? 'pd.read_sql_query()'は実際にsqlクエリを読み込んでデータベース内に作成されたテーブル(またはビュー)の行、カラムを取得しますか? – ftxx

+0

私は間違いをしなかったので、あなたはそのビューを作成するために 'engine.execute'を使う必要があります – PRMoureu

答えて

2

コードは次のようにする必要があります:

import sqlite3 
import pandas as pd 
engine = sqlite3.connect('Practice') 
BST = pd.DataFrame({'N':[1,3,5,7,2,6,4,8,10,12,14,9,13,11,15],'P':[2,2,6,6,4,4,15,9,9,13,13,11,11,15,'NULL']}) 
BST.to_sql(name = "BST", con=engine, if_exists = 'replace', index = False) 

engine.execute("CREATE VIEW V1 as select P from BST") 

print(pd.read_sql_query('SELECT * from V1', con=engine)) 
関連する問題