Python - SQL Server的sql语句中的通配符%转义

问题: python中在连接使用sql查询的时候,通配符%不能正常被识别 

例如: 查询 select * from Table where name like '%test'"

运行之后会提示缺少参数,因为%的原因

解决办法: 使用两个%可以对%进行转义: %%, 转义之后只有一个%,可以正常使用

import pymssql


class SqlClient:


    def __getConnect(self):
        try:
            self.conn = pymssql.connect(host=self.host, appname = self.appname ,                 user=self.user, password=self.pwd,
                                        database=self.db, charset="utf8", port= self.port)
            cur = self.conn.cursor()
        except pymssql.OperationalError:
            pass
        except Exception as e:
            _logger.error('error:' % e)
        else:
            return cur

 def query(self, sql):
        cur = self.__getConnect()
        try:
            cur.execute(sql)
            resList = cur.fetchall()
            self.conn.close()
            return resList
        except AttributeError:
            _logger.error( 'connect sqlserver failed! SQL:{sql}'.format(sql=sql))
        except pymssql.ProgrammingError:
            _logger.error( 'db error! SQL:{sql}'.format(sql=sql))

_sqlClient = SqlClient()

if __name__ == "__main__":
    
    _sqlClient.query("select * from Table where name like '%%test'")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值