Python 如何创建在下拉式虚线图组件中显示列名称的查询
我试图使用以下查询显示SQL Server Management Studio中表中的特定列名称:Python 如何创建在下拉式虚线图组件中显示列名称的查询,python,sql-server,pandas,hyphen,Python,Sql Server,Pandas,Hyphen,我试图使用以下查询显示SQL Server Management Studio中表中的特定列名称: SELECT ServiceDropRate(All), Packet_DropRate_4G(%), Voice_DropRate_4G(%), InterFreq_SuccessRate_4G(%), Intra-RATHOSucccessRate(%), IntraFreq_SuccessRate_4G(%), FROM INFORMATION_SCHEMA.COLUMNS WHERE [m
SELECT ServiceDropRate(All), Packet_DropRate_4G(%), Voice_DropRate_4G(%), InterFreq_SuccessRate_4G(%), Intra-RATHOSucccessRate(%), IntraFreq_SuccessRate_4G(%), FROM INFORMATION_SCHEMA.COLUMNS WHERE [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]
我还想在这一行中添加选项列名称:
options=[{'label': i['ServiceDropRate(All)'], 'value': i['ServiceDropRate(All)']} for i in lte_kpis],
这是我的全部代码:
import pandas as pd
import dash
import dash_core_components as dcc
import dash_html_components as html
from sqlalchemy import create_engine
import pyodbc
# connect db
engine = create_engine('mssql+pyodbc://WWX542337CDCD\SMARTRNO_EXPRESS/myDB?driver=SQL+Server+Native+Client+11.0')
cursor = engine.raw_connection().cursor()
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
lte_kpis = pd.read_sql('SELECT ServiceDropRate(All), Packet_DropRate_4G(%), Voice_DropRate_4G(%), InterFreq_SuccessRate_4G(%), Intra-RATHOSucccessRate(%), IntraFreq_SuccessRate_4G(%), FROM INFORMATION_SCHEMA.COLUMNS WHERE [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]',
engine).to_dict(orient='records')
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
server = app.server
app.layout = html.Div([
html.H2('Your KPIS'),
dcc.Dropdown(
id="myKPIS",
options=[{'label': i['ServiceDropRate(All)'], 'value': i['ServiceDropRate(All)']} for i in lte_kpis],
multi=True,
value="ServiceDropRate(All)"
),
if __name__ == '__main__':
app.run_server(debug=True)
问题是我在sql查询中遇到语法错误
这就是我发现的错误:
Traceback (most recent call last):
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1245, in _execute_context
self.dialect.do_execute(
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\default.py", line 581, in do_execute
cursor.execute(statement, parameters)
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ')'. (102) (SQLExecDirectW)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:/Users/mwx825326/PycharmProjects/MyReference/myGUI.py", line 18, in <module>
lte_kpis = pd.read_sql('SELECT ServiceDropRate(All), Packet_DropRate_4G(%), Voice_DropRate_4G(%), InterFreq_SuccessRate_4G(%), Intra-RATHOSucccessRate(%), IntraFreq_SuccessRate_4G(%), FROM INFORMATION_SCHEMA.COLUMNS WHERE [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]',
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\pandas\io\sql.py", line 430, in read_sql
return pandas_sql.read_query(
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\pandas\io\sql.py", line 1218, in read_query
result = self.execute(*args)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\pandas\io\sql.py", line 1087, in execute
return self.connectable.execute(*args, **kwargs)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 2182, in execute
return connection.execute(statement, *multiparams, **params)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 976, in execute
return self._execute_text(object_, multiparams, params)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1143, in _execute_text
ret = self._execute_context(
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1249, in _execute_context
self._handle_dbapi_exception(
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1476, in _handle_dbapi_exception
util.raise_from_cause(sqlalchemy_exception, exc_info)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\util\compat.py", line 398, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\util\compat.py", line 152, in reraise
raise value.with_traceback(tb)
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1245, in _execute_context
self.dialect.do_execute(
File "C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site-packages\sqlalchemy\engine\default.py", line 581, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ')'. (102) (SQLExecDirectW)")
[SQL: SELECT ServiceDropRate(All), Packet_DropRate_4G(%), Voice_DropRate_4G(%), InterFreq_SuccessRate_4G(%), Intra-RATHOSucccessRate(%), IntraFreq_SuccessRate_4G(%), FROM INFORMATION_SCHEMA.COLUMNS WHERE [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]]
(Background on this error at: http://sqlalche.me/e/f405)
回溯(最近一次呼叫最后一次):
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,第1245行,在执行上下文中
self.dialogue.do_执行(
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\default.py”,第581行,在do\u execute中
cursor.execute(语句、参数)
pyodbc.ProgrammingError:('42000',“[42000][Microsoft][SQL Server本机客户端11.0][SQL Server]附近的语法不正确”)。(102)(SQLExecDirectW)”
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“C:/Users/mwx825326/PycharmProjects/MyReference/myGUI.py”,第18行,在
lte_KPI=pd.read_sql('从[myDB].[dbo].[mnm_rotterdam_5_daily_details-2019121608127]中的信息模式列中选择ServiceDropRate(All)、Packet_DropRate_4G(%)、Voice_DropRate_4G(%)、Interreq_SuccessRate_4G(%)、Intra RathSuccessrate(%)、Intra Rate(%)、IntraFreq_SuccessRate_4G(%),
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\pandas\io\sql.py”,第430行,以read\u sql格式
返回\u sql.read\u查询(
读取查询中的文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\pandas\io\sql.py”,第1218行
结果=self.execute(*args)
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\pandas\io\sql.py”,第1087行,在execute中
返回self.connectable.execute(*args,**kwargs)
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,执行中的第2182行
返回connection.execute(语句,*multiparams,**params)
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,第976行,在execute中
返回self.\u执行\u文本(对象、多内存、参数)
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,第1143行,文本为
ret=自我执行上下文(
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,第1249行,在执行上下文中
self.\u handle\u dbapi\u异常(
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,第1476行,在_handle\u dbapi\u异常中
util.raise\u from\u cause(sqlalchemy\u异常,exc\u信息)
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\util\compat.py”,第398行,从原因开始
重新释放(类型(异常),异常,tb=exc\U tb,原因=原因)
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\util\compat.py”,第152行,在reraise中
通过_回溯(tb)提升值
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\base.py”,第1245行,在执行上下文中
self.dialogue.do_执行(
文件“C:\Users\mwx825326\PycharmProjects\MyReference\venv\lib\site packages\sqlalchemy\engine\default.py”,第581行,在do\u execute中
cursor.execute(语句、参数)
sqlalchemy.exc.ProgrammingError:(pyodbc.ProgrammingError)('42000',“[42000][Microsoft][SQL Server原生客户端11.0][SQL Server]附近语法不正确”)。(102)(SQLExecDirectW)”
[SQL:从[myDB].[dbo].[mnm_鹿特丹5_每日详细信息-20191216081027]的信息模式列中选择ServiceDropRate(All)、Packet_DropRate_4G(%)、Voice_DropRate_4G(%)、InterFreq_SuccessRate_4G(%)、InterFreq_SuccessRate_4G(%)、Intra Rathosuccessrate(%)、IntraFreq_SuccessRate_4G(%)]
(有关此错误的背景信息,请访问:http://sqlalche.me/e/f405)
因此,任何人都有解决方案???请指定目前的问题所在。我认为您应该尝试将数据帧/表存储在一个隐藏的div中,并使用回调更新下拉选项。@FBruzzesi感谢您的支持,我很高兴为我提供一些简单的方法。