簡體   English   中英

當我期望一個列表時,為什么我沒有('NoneType' object 不可迭代)?

[英]Why do I have None ('NoneType' object is not iterable) when I expected a list?

我正在使用 pandas.read_sql 檢索表名列表,然后嘗試使用“for”循環從檢索到的列表中刪除表。 但是,我收到“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:請參閱下面我收到的完整 output:

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查詢什么都不返回,所以None ,所以 pandas 不能迭代它來構建一個 dataframe。

請參閱當我沒有表 object 時如何在 SQLAlchemy 中刪除表?


請注意,調試時要小心引發錯誤的行,您說“雖然列表不為空”但引發錯誤的行不使用列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM