使用python读取数据库内容,定位“name”列的数据,定位不到

问题描述:

python操作数据库,使用SQL语句,查找修改name列某个参数时,定位不到该参数

操作数据库代码是:

# 创建数据库链接
    def open_db(self):
        host = self.read_conf("host")
        port = int(self.read_conf("port"))
        user = self.read_conf("user")
        passwd = self.read_conf("passwd")

        self.conn = pymysql.connect(host=host, user=user, password=passwd, port=port, db=self.db)
        self.cursor = self.conn.cursor()  # 获取游标对象

    # 关闭链接
    def close_db(self):
        self.cursor.close()
        self.conn.close()

    def param_conf(self, conf_name, conf_val):
        confsql = 'UPDATE topo_default_config SET Val={val} WHERE Name={name}'.format(val=conf_val, name=conf_name)
        cursor = self.cursor
        try:
            cursor.execute(confsql)
            self.conn.commit()
        except:
            self.conn.rollback()
# RemindNumber 提醒中心号码
def config_RemindNumber(self, centre_num):
"""
配置提醒中心号码
:param centre_num: 提醒中心号码
"""
self.open_db()
self.param_conf('RemindNumber', centre_num)
self.close_db()

运行结果为找不到'RemindNumber'

解决方法:

问题原因:MySql中字段为int类型时,搜索条件“where num = '124' ”,或者“where num=123 ”均可以定位到目标

     MySql中字段类型为varchar类型时,使用索引必须加引号,搜索条件“where name=‘abc’ ”可以索引,搜索条件“where name=abc ”索引失败

修改后代码:

    def param_conf(self, conf_name, conf_val):
        confsql = 'UPDATE topo_default_config SET Val={val} WHERE Name="{name}"'.format(val=conf_val, name=conf_name)
        cursor = self.cursor
        try:
            cursor.execute(confsql)
            self.conn.commit()
        except:
            self.conn.rollback()

 执行成功

 

posted @ 2020-10-30 11:19  薄小木的自动化进阶之路  阅读(249)  评论(0)    收藏  举报