我想创建一个搜索框,它将从用户那里获取输入,将其放入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))
这就是我所需要的:)
答案 0 :(得分:0)
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()
您能否澄清“显示我的结果”是什么意思?