为什么在我期望列表时出现 None('NoneType' 对象不可迭代)?
Why do I have None ('NoneType' object is not iterable) when I expected a list?
我正在使用 pandas.read_sql 检索 table 名称列表,然后尝试使用“for”循环从检索列表中删除 table。但是,我收到 'NoneType' object is not iterable 错误(尽管列表不为空)。
print(type(out_tables_list))
<class 'list'>
print(out_tables_list is None)
False
tables = pd.read_sql("""
SHOW TABLES IN P_SMO_INP_T
""", con=connection)
tableName = tables.tableName
out_tables = tableName[tableName.str.contains('_sg_')]
out_tables_list = out_tables.to_list()
for name in out_tables_list:
pd.read_sql("DROP TABLE P_SMO_INP_T.{}".format(name), con=connection)
你能帮我弄清楚我的错误是什么吗?提前致谢!
LE:请参阅下面我收到的完整输出:
TypeError Traceback (most recent call last)
<ipython-input-46-1e7a629dac7d> in <module>
1 for name in out_tables_list:
----> 2 pd.read_sql("DROP TABLE P_SMO_INP_T.{}".format(name), con=connection)
c:\users\sgulunga\appdata\local\programs\python\python38-32\lib\site-packages\pandas\io\sql.py in read_sql(sql, con, index_col, coerce_float, params, parse_dates, columns, chunksize)
481
482 if isinstance(pandas_sql, SQLiteDatabase):
--> 483 return pandas_sql.read_query(
484 sql,
485 index_col=index_col,
c:\users\sgulunga\appdata\local\programs\python\python38-32\lib\site-packages\pandas\io\sql.py in read_query(self, sql, index_col, coerce_float, params, parse_dates, chunksize)
1726 args = _convert_params(sql, params)
1727 cursor = self.execute(*args)
-> 1728 columns = [col_desc[0] for col_desc in cursor.description]
1729
1730 if chunksize is not None:
TypeError: 'NoneType' object is not iterable
一个 DROP
查询 returns 什么都没有,所以 None
,所以 pandas 不能迭代它来构建数据框。
见How do I drop a table in SQLAlchemy when I don't have a table object?
注意调试时注意报错行,你说“虽然列表不为空”但报错行并没有使用列表
我正在使用 pandas.read_sql 检索 table 名称列表,然后尝试使用“for”循环从检索列表中删除 table。但是,我收到 'NoneType' object is not iterable 错误(尽管列表不为空)。
print(type(out_tables_list))
<class 'list'>
print(out_tables_list is None)
False
tables = pd.read_sql("""
SHOW TABLES IN P_SMO_INP_T
""", con=connection)
tableName = tables.tableName
out_tables = tableName[tableName.str.contains('_sg_')]
out_tables_list = out_tables.to_list()
for name in out_tables_list:
pd.read_sql("DROP TABLE P_SMO_INP_T.{}".format(name), con=connection)
你能帮我弄清楚我的错误是什么吗?提前致谢!
LE:请参阅下面我收到的完整输出:
TypeError Traceback (most recent call last)
<ipython-input-46-1e7a629dac7d> in <module>
1 for name in out_tables_list:
----> 2 pd.read_sql("DROP TABLE P_SMO_INP_T.{}".format(name), con=connection)
c:\users\sgulunga\appdata\local\programs\python\python38-32\lib\site-packages\pandas\io\sql.py in read_sql(sql, con, index_col, coerce_float, params, parse_dates, columns, chunksize)
481
482 if isinstance(pandas_sql, SQLiteDatabase):
--> 483 return pandas_sql.read_query(
484 sql,
485 index_col=index_col,
c:\users\sgulunga\appdata\local\programs\python\python38-32\lib\site-packages\pandas\io\sql.py in read_query(self, sql, index_col, coerce_float, params, parse_dates, chunksize)
1726 args = _convert_params(sql, params)
1727 cursor = self.execute(*args)
-> 1728 columns = [col_desc[0] for col_desc in cursor.description]
1729
1730 if chunksize is not None:
TypeError: 'NoneType' object is not iterable
一个 DROP
查询 returns 什么都没有,所以 None
,所以 pandas 不能迭代它来构建数据框。
见How do I drop a table in SQLAlchemy when I don't have a table object?
注意调试时注意报错行,你说“虽然列表不为空”但报错行并没有使用列表