read_sql 在函数中的用法
read_sql usage in functions
我正在尝试在函数中使用 Pandas' read_sql() (来自 sqlalchemy),但它一直返回字符串而不是 DataFrame。
为什么会发生这种情况以及如何解决?
当我做这样的事情时:
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
它 returns 包含有关 DataFrame 的信息,但不允许我将结果用作 DataFrame:
sql_reading(some_table_from_a_query, "Some comment")
Prints some_table_from_a_query.info(), everything is fine.
但是当我尝试打印出它的头部或尾部,或者在下一步中直接使用 describe() 时,它 returns 出现错误:
some_table_from_a_query.info()
AttributeError: 'str' object has no attribute 'info'
更新:Return table_name 没有任何区别。
希望能解释为什么会发生以及如何解决。
您将字符串 'table_name' 与您也称为 'table_name' 的实际数据帧混淆了。这就是为什么您会收到字符串 (table_name) 没有属性 'info' 的错误。尝试为 table 与数据框使用不同的变量名称,例如:
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
我正在尝试在函数中使用 Pandas' read_sql() (来自 sqlalchemy),但它一直返回字符串而不是 DataFrame。
为什么会发生这种情况以及如何解决?
当我做这样的事情时:
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
它 returns 包含有关 DataFrame 的信息,但不允许我将结果用作 DataFrame:
sql_reading(some_table_from_a_query, "Some comment")
Prints some_table_from_a_query.info(), everything is fine.
但是当我尝试打印出它的头部或尾部,或者在下一步中直接使用 describe() 时,它 returns 出现错误:
some_table_from_a_query.info()
AttributeError: 'str' object has no attribute 'info'
更新:Return table_name 没有任何区别。
希望能解释为什么会发生以及如何解决。
您将字符串 'table_name' 与您也称为 'table_name' 的实际数据帧混淆了。这就是为什么您会收到字符串 (table_name) 没有属性 'info' 的错误。尝试为 table 与数据框使用不同的变量名称,例如:
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