优化def modify_fonts_upd(question): # 查询出数据库中需要修改的zi try: mydb = dbUtil() # 查询所有错误成语和对应的正确成语 mycursor = mydb.cursor() mycursor.execute("select chgfont,modifont from ai_modify_fonts where status =1") result = mycursor.fetchall() # 将结果转化为字典 replace_dict = dict(result) except Exception as e: message = {"status": "succeed", "content": "添加失败"} return jsonify(message) for wrong_word, correct_word in replace_dict.items(): question = question.replace(wrong_word, correct_word) return question
时间: 2024-03-10 16:44:36 浏览: 104
这段代码可以改进的地方有:
1. 数据库连接应该使用上下文管理器,以确保在使用完后及时关闭连接。
2. 应该对数据库查询结果进行错误处理,以确保在查询出错时可以及时发现问题。
3. 应该将数据库查询操作封装在一个函数中,便于复用和维护。
4. 应该使用参数化查询,以防止 SQL 注入攻击。
5. 可以考虑使用缓存来提高查询效率。
下面是优化后的代码:
```
from contextlib import closing
import mysql.connector
from mysql.connector import errorcode
def get_replace_dict():
"""查询所有需要修改的字体"""
try:
config = {
'user': 'root',
'password': '123456',
'host': 'localhost',
'database': 'test'
}
with closing(mysql.connector.connect(**config)) as cnx:
with closing(cnx.cursor()) as cursor:
query = "SELECT chgfont, modifont FROM ai_modify_fonts WHERE status = 1"
cursor.execute(query)
return dict(cursor.fetchall())
except mysql.connector.Error as e:
if e.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("用户名或密码错误")
elif e.errno == errorcode.ER_BAD_DB_ERROR:
print("数据库不存在")
else:
print("连接数据库失败:", e)
def modify_fonts_upd(question):
"""替换需要修改的字体"""
replace_dict = get_replace_dict()
for wrong_word, correct_word in replace_dict.items():
question = question.replace(wrong_word, correct_word)
return question
```
这样的代码更加健壮和易于维护。同时,为了进一步提高效率,可以考虑使用缓存来避免每次查询都要访问数据库的问题。
阅读全文