使用python在mysql查询结果中添加字符串时出现问题
我想在mysql中的查询结果中添加一个字符串 我尝试了以下代码:使用python在mysql查询结果中添加字符串时出现问题,python,mysql,string,list,executemany,Python,Mysql,String,List,Executemany,我想在mysql中的查询结果中添加一个字符串 我尝试了以下代码: mensaje=input(“introzca el sms que desa envirar:”) cursorsql1=conectar.cursor() sql=“选择msisdn,”(mensaje)“值(%s)作为来自以下文件的mensaje:tarifa不喜欢“%Iot%”,透明属性不喜欢“%Momo%”,状态像“%active%”,msisdn像“56943404789”,并在子日期(当前日期,1)和当前日期之间创建
mensaje=input(“introzca el sms que desa envirar:”)
cursorsql1=conectar.cursor()
sql=“选择msisdn,”(mensaje)“值(%s)作为来自以下文件的mensaje:tarifa不喜欢“%Iot%”,透明属性不喜欢“%Momo%”,状态像“%active%”,msisdn像“56943404789”,并在子日期(当前日期,1)和当前日期之间创建。格式(mensaje,值)
cursorsql1.executemany(sql,mensaje)
columnas=cursorsql1.fetchall()
打印(专栏)
错误是这样的
mysql.connector.errors.ProgrammingError:查询的参数必须是列表或元组 我希望结果是这样的
| 56953404789 | some message |
知道是什么导致了我的错误吗
提前感谢您的帮助编辑:
提供注射安全方法:
使用sql CONCAT函数:
sql = "SELECT CONCAT(msisdn, ?) AS mensaje FROM perfiles"
cursorsql1.execute(sql, (mensaje,))
请注意,在sqlite上没有CONCAT函数,而是使用| |运算符:
"SELECT msisdn || ? AS mensaje FROM perfiles"
尝试将参数作为列表放置:
cursorsql1.executemany(sql[mensaje])
mysql.connector.errors.ProgrammingError:执行操作失败;无法处理参数:(Thankkkss以这种方式完成此工作:“选择msisdn,{}作为mensaje from…”。格式化(mensaje)对于记录非常危险,如果您将其设计为供其他人使用,它很容易受到SQL注入攻击。感谢您的警告,但这是我个人使用的:)