我想创建一个搜索框,该搜索框将从用户获取输入,将其放入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()
您能否澄清"显示我的结果"的意思?