2017-07-03 115 views
1

我在python中使用sqlite3python 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()'是一個熊貓函數,以便在數據庫中創建一個真正的表或者在數據庫中創建一個視圖(佔用的內存少於創建實際表?),以後可以引用我對嗎? '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)) 
相關問題