sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

本文探讨了在执行SQL更新语句时如何避免SQL注入风险,通过使用pymysql库的escape_string方法来确保字符串参数的安全性,展示了正确的SQL参数化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

源代码:

sql = """
              UPDATE t_datav SET info ="%s" WHERE category ="mock"
          """ % (res)

改后:

sql="""
    UPDATE t_datav SET info ="%s" WHERE category ="mock"
"""%(pymysql.escape_string(res) )
生成的sql有问题: raise errorclass(errno, errval) sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '} END,\ncustomer = CASE\nWHEN sku = 'Z1D03B00AD32CE79A5163Z' THEN 158\nWHEN sku = '' at line 23") [SQL: UPDATE t_offer_info SET saler_score = CASE WHEN sku = %(key_0)s THEN %(saler_score_0)s WHEN sku = %(key_1)s THEN %(saler_score_1)s WHEN sku = %(key_2)s THEN %(saler_score_2)s WHEN sku = %(key_3)s THEN %(saler_score_3)s WHEN sku = %(key_4)s THEN %(saler_score_4)s WHEN sku = %(key_5)s THEN %(saler_score_5)s WHEN sku = %(key_6)s THEN %(saler_score_6)s WHEN sku = %(key_7)s THEN %(saler_score_7)s WHEN sku = %(key_8)s THEN %(saler_score_8)s WHEN sku = %(key_9)s THEN %(saler_score_9)s WHEN sku = %(key_10)s THEN %(saler_score_10)s WHEN sku = %(key_11)s THEN %(saler_score_11)s WHEN sku = %(key_12)s THEN %(saler_score_12)s WHEN sku = %(key_13)s THEN %(saler_score_13)s WHEN sku = %(key_14)s THEN %(saler_score_14)s WHEN sku = %(key_15)s THEN %(saler_score_15)s WHEN sku = %(key_16)s THEN %(saler_score_16)s WHEN sku = %(key_17)s THEN %(saler_score_17)s WHEN sku = %(key_18)s THEN %(saler_score_18)s WHEN sku = %(key_19)s THEN %(saler_score_19)s ELSE {col} END, customer = CASE WHEN sku = %(key_0)s THEN %(customer_0)s WHEN sku = %(key_1)s THEN %(customer_1)s WHEN sku = %(key_2)s THEN %(customer_2)s WHEN sku = %(key_3)s THEN %(customer_3)s WHEN sku = %(key_4)s THEN %(customer_4)s WHEN sku = %(key_5)s THEN %(customer_5)s WHEN sku = %(key_6)s THEN %(customer_6)s WHEN sku = %(key_7)s THEN %(customer_7)s WHEN sku = %(key_8)s THEN %(customer_8)s WHEN sku = %(key_9)s THEN %(customer_9)s WHEN sku = %(key_10)s THEN %(customer_10)s WHEN sku = %(key_11)s THEN %(customer_11)s WHEN sku = %(key_12)s THEN %(customer_12)s WHEN sku = %(key_13)s THEN %(customer_13)s WHEN sku = %(key_14)s THEN %(customer_14)s WHEN sku = %(key_15)s THEN %(customer_15)s WHEN sku = %(key_16)s THEN %(customer_16)s WHEN sku = %(key_17)s THEN %(customer_17)s WHEN sku = %(key_18)s THEN %(customer_18)s WHEN sku = %(key_19)s THEN %(customer_19)s ELSE {col} END WHERE sku IN (%(sku_0)s,%(sku_1)s,%(sku_2)s,%(sku_3)s,%(sku_4)s,%(sku_5)s,%(sku_6)s,%(sku_7)s,%(sku_8)s,%(sku_9)s,%(sku_10)s,%(sku_11)s,%(sku_12)s,%(sku_13)s,%(sku_14)s,%(sku_15)s,%(sku_16)s,%(sku_17)s,%(sku_18)s,%(sku_19)s)] [parameters: {'key_0': 'Z1D03B00AD32CE79A5163Z', 'saler_score_0': 4.8, 'key_1': 'Z8F10294E91F2D7D62E10Z', 'saler_score_1': 4.8, 'key_2': 'ZAF5F7EA26402545B78CCZ', 'saler_score_2': 4.8, 'key_3': 'Z779B4AF6E3266F5D91C2Z', 'saler_score_3': 4.8, 'key_4': 'Z826E2C5B1529CD23E9B5Z', 'saler_score_4': 4.8, 'key_5': 'Z26A665DE4787BA0AE7D4Z', 'saler_score_5': 4.8, 'key_6': 'ZD5CA810500167A3CBBCCZ', 'saler_score_6': 4.8, 'key_7': 'Z65E67086B1D75AF0BEE3Z', 'saler_score_7': 4.8, 'key_8': 'ZC41A881C97D6D10A6830Z', 'saler_score_8': 4.8, 'key_9': 'Z66099A00658818ECA0B2Z', 'saler_score_9': 4.8, 'key_10': 'Z9748D36000FEDE033C5EZ', 'saler_score_10': 4.9, 'key_11': 'Z1FDC2F9CE99B175E2C5AZ', 'saler_score_11': 4.8, 'key_12': 'Z7979354FEBF3D8CBEA5BZ', 'saler_score_12': 4.8, 'key_13': 'ZE2399C4D2FE10C0B30FDZ', 'saler_score_13': 4.8, 'key_14': 'Z50B6086CE8B0C774E5B3Z', 'saler_score_14': 4.8, 'key_15': 'N31985097A', 'saler_score_15': 4.8, 'key_16': 'Z3E03FE75F38DEFC3E762Z', 'saler_score_16': 4.9, 'key_17': 'N43636512A', 'saler_score_17': 4.8, 'key_18': 'N42962838A', 'saler_score_18': 4.9, 'key_19': 'Z2CD404C49F79F8137521Z', 'saler_score_19': 4.9, 'customer_0': 158, 'customer_1': 153, 'customer_2': 153, 'customer_3': 153, 'customer_4': 153, 'customer_5': 153, 'customer_6': 153, 'customer_7': 153, 'customer_8': 153, 'customer_9': 153, 'customer_10': 137, 'customer_11': 128, 'customer_12': 120, 'customer_13': 118, 'customer_14': 109, 'customer_15': 68, 'customer_16': 67, 'customer_17': 66, 'customer_18': 62, 'customer_19': 61, 'sku_0': 'Z1D03B00AD32CE79A5163Z', 'sku_1': 'Z8F10294E91F2D7D62E10Z', 'sku_2': 'ZAF5F7EA26402545B78CCZ', 'sku_3': 'Z779B4AF6E3266F5D91C2Z', 'sku_4': 'Z826E2C5B1529CD23E9B5Z', 'sku_5': 'Z26A665DE4787BA0AE7D4Z', 'sku_6': 'ZD5CA810500167A3CBBCCZ', 'sku_7': 'Z65E67086B1D75AF0BEE3Z', 'sku_8': 'ZC41A881C97D6D10A6830Z', 'sku_9': 'Z66099A00658818ECA0B2Z', 'sku_10': 'Z9748D36000FEDE033C5EZ', 'sku_11': 'Z1FDC2F9CE99B175E2C5AZ', 'sku_12': 'Z7979354FEBF3D8CBEA5BZ', 'sku_13': 'ZE2399C4D2FE10C0B30FDZ', 'sku_14': 'Z50B6086CE8B0C774E5B3Z', 'sku_15': 'N31985097A', 'sku_16': 'Z3E03FE75F38DEFC3E762Z', 'sku_17': 'N43636512A', 'sku_18': 'N42962838A', 'sku_19': 'Z2CD404C49F79F8137521Z'}] (Background on this error at: https://sqlalche.me/e/20/f405)
最新发布
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值