查询结果不会显示为熊猫数据帧,但可以使用 print() 显示?



我想创建一个搜索框,该搜索框将从用户获取输入,将其放入SQL查询中,然后从查询数据库中返回匹配记录。

一切似乎都很好 - 除了我无法将查询结果显示为PANDAS数据框架。脚本应显示对象时才可以。但是,当我使用print((时,显示我的结果。

当我这样这样做时,什么也不会发生:

query = pd.read_sql(sql_string, connection)
query

但这很好:

query = pd.read_sql(sql_string, connection)
print(query)

这是我的代码:

import qgrid
from ipywidgets import widgets
from IPython.display import display
connection = 'connection:details'
text = widgets.Text()
display(text)
def handle_submit(a):
    user_input = text.value
    sp_char = "%"
    sql_string = "SELECT a FROM my_database WHERE UPPER(a) LIKE UPPER('%s%s%s') % (sp_char,user_input,sp_char)
    query = pd.read_sql(sql_string, connection)
    query
text.on_submit(handle_submit)

我很确定,我对变量在 def 的内部和外部移动的方式做错了什么,但是我不确定从这里去哪里。

编辑:

用ipywidget函数求解display()

    query = pd.read_sql(sql_string, connection)
    display(qgrid.show_grid(query))

这就是我所需要的:(

ipython不打印功能中的返回值。

>>> a = 1
>>> a            # prints 1 because in global scope
>>> def foo():
        a = 2
        a        # prints nothing, even though a value is returned to the REPL
>>> foo()
>>> def baz():
        a = 2
        print(a) # prints 2
>>> baz()

您能否澄清"显示我的结果"的意思?

最新更新