使用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()
执行成功

浙公网安备 33010602011771号