繁体   English   中英

read_sql 在函数中的使用

[英]read_sql usage in functions

我试图在函数内使用 Pandas 的 read_sql()(来自 sqlalchemy),但它一直返回字符串而不是数据帧。

为什么会发生这种情况以及如何解决?

当我做这样的事情时:

table_name = pd.io.sql.read_sql(table_name, con=engine)

一切正常。 但是当我把它放在一个像这样的函数中时:

def sql_reading(table_name, comment):
     table_name = pd.io.sql.read_sql(table_name, con=engine)
     print('\x1b[1;31m'+comment  +'\x1b[0m')
     table_name.info()
     return table_name

它返回有关 DataFrame 的信息,但不允许我将结果用作 DataFrame:

sql_reading(some_table_from_a_query, "Some comment")

Prints some_table_from_a_query.info(), everything is fine.

但是当我尝试打印出它的头部或尾部,或者在下一步中按字面意思使用 describe() 时,它返回一个错误:

some_table_from_a_query.info()

AttributeError: 'str' object has no attribute 'info'

UPD:返回 table_name 没有任何区别。

希望能解释一下它为什么会发生以及如何解决它。

您将字符串 'table_name' 与实际数据框混淆,您也将其称为 'table_name'。 这就是为什么您会收到字符串 (table_name) 没有属性“信息”的错误。 尝试为表和数据框使用不同的变量名称,例如:

def sql_reading(table_name, comment):
     df_table_name = pd.io.sql.read_sql(table_name, con=engine)
     print('\x1b[1;31m'+comment  +'\x1b[0m')
     df_table_name.info()
     return df_table_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM