Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python sqlite“NoneType”对象不可编辑_Python_Sqlite - Fatal编程技术网

python sqlite“NoneType”对象不可编辑

python sqlite“NoneType”对象不可编辑,python,sqlite,Python,Sqlite,我正在python中使用sqlite3 我在数据库中创建了一个表。该表有一些空值 然后我想创建这个表的视图 pd.read_sql_query("CREATE VIEW V1 as select P from BST",con=engine) 但它抛出一个错误TypeError:“NoneType”对象不可iterable 我想知道当表包含空值时,如何在sqlite中创建表的视图?代码应该是这样的: import sqlite3 import pandas as pd engine = s

我正在python中使用sqlite3

我在数据库中创建了一个表。该表有一些空值

然后我想创建这个表的视图

pd.read_sql_query("CREATE VIEW V1 as select P from BST",con=engine)  
但它抛出一个错误TypeError:“NoneType”对象不可iterable


我想知道当表包含空值时,如何在sqlite中创建表的视图?

代码应该是这样的:

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

我认为不能在同一个视图中读取sql和创建视图time@PRMoureu谢谢那么df.to_sql是一个函数,可以在数据库中创建一个实际的表,或者创建一个比创建实际表占用更少内存的视图?在以后可以参考的数据库中,我说的对吗?pd.read\u sql\u查询真的只是读取sql查询并获取数据库中已创建表或视图中的行、列吗?不,我犯了一个错误,您必须使用engine.execute来创建它view@PRMoureu但实际上我用的是你的第1个版本,效果很好。我甚至还编写了第二个使用视图V1的查询……真正的问题是为什么它能工作,因为我们没有创建一个视图,而是创建一个名为“CreateViewV1 as selectp from BST”的表,我稍后会看一看
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))