如何在python中将用户输入数据传递到SQL语法
我想通过如何在python中将用户输入数据传递到SQL语法,python,sql,Python,Sql,我想通过pandas将用户输入变量传递给SQL。通过使用pycharm IDE 2020.2版和Microsoft SQL Server 2019之间的连接读取\u SQL\u query,如下代码所示: InputID = int(input('Give me your input MeterpointID: ')) OccurDate = input('What is the beginning occurrence datetime (yyyy-mm-dd hh:mm:ss):') S
pandas将用户输入变量传递给SQL。通过使用pycharm IDE 2020.2版和Microsoft SQL Server 2019之间的连接读取\u SQL\u query
,如下代码所示:
InputID = int(input('Give me your input MeterpointID: '))
OccurDate = input('What is the beginning occurrence datetime (yyyy-mm-dd hh:mm:ss):')
SQL_Query = pd.read_sql_query('select * from tblprofilewhimp_norm where
MeterpointID = InputID and Date_M > \'OccurDate\'', conn)
但是,此代码不起作用,IDE向我显示了如下错误:
pandas.io.sql.DatabaseError:在sql“select*from”上执行失败
tblprofilewhimp\u norm,其中MeterpointID=InputID和Date\u M>
'占用日期':('42S22',“[42S22][Microsoft][SQL Server的ODBC驱动程序17]
[SQL Server]列名“InputID”无效。(207)(SQLExecDirectW)“)
那么,你能告诉我如何处理这个问题吗
提前感谢。使用格式字符串连接字符串和变量:
SQL_Query = pd.read_sql_query('select * from tblprofilewhimp_norm where MeterpointID = {} and Date_M > \'{}\''.format(InputID, OccurDate), conn)
您需要查找SQL库使用的占位符格式,然后将值作为
params
参数传递给pd.read\u SQL\u query
假设SQL库为pyodbc,占位符格式为?
,语法为:
SQL_Query = pd.read_sql_query(
'select * from tblprofilewhimp_norm where MeterpointID = ? and Date_M > ?',
conn,
params=(InputID, OccurDate),
)
请修复代码格式。错误表明列
InputID
不存在。你能发一份数据样本吗?非常感谢,先生。解释得很清楚。不,请不要这样做;这是一个巨大的安全漏洞。相反,使用SQL库提供的占位符机制;在任何时候使用格式字符串(或等效字符串)创建SQL语句时都要非常偏执,这是一个好习惯。有时这是不可避免的,但风险总是很高的。在params
参数中传递变量要安全得多。