簡體   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