2017-07-03 6 views
1

Ich verwende die sqlite3 in Python.Python sqlite 'NoneType' -Objekt ist nicht iterierbar

Ich habe eine Tabelle in der Datenbank erstellt. Die Tabelle hat einige NULL Werte

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) 

Dann habe ich einen Blick auf diese Tabelle

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

erstellen möchten Aber es wirft einen Fehler TypeError: 'NoneType' object is not iterable.

Ich frage mich, wie sollte ich eine Sicht auf eine Tabelle in SQLite erstellen, wenn die Tabelle NULL Wert enthält?

+2

Ich glaube, Sie nicht SQL und erstellen Sie eine Ansicht in der gleichen Zeit – PRMoureu

+1

@PRMoureu dank lesen! Also ist 'df.to_sql()' eine Pandas-Funktion, um entweder eine reale Tabelle in der Datenbank zu erzeugen oder eine Sicht (die weniger Speicher belegt als eine tatsächliche Tabelle zu erstellen?) In der Datenbank, auf die später Bezug genommen werden kann, zu erstellen Ich richtig? 'pd.read_sql_query()' liest wirklich die SQL-Abfrage und holt die Zeilen, Spalten in der erzeugten Tabelle (oder Ansicht) in der Datenbank? – ftxx

+0

nein, ich habe einen Fehler gemacht, Sie müssen 'engine.execute' verwenden, um diese Ansicht zu erstellen – PRMoureu

Antwort

2

Der Code sollte wie folgt sein:

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)) 
Verwandte Themen