You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现MySQL数据库用户名存在性校验(返回布尔值)

修复用户名可用性检查的问题

原代码存在的问题

  • 数据库连接语句缺少闭合括号,会触发语法错误
  • 查询全表用户名再循环对比,数据量大时效率极低
  • 逻辑错误:每遍历一个用户就输出一次结果,无法给出「该用户名是否可用」的最终结论
  • 存在潜在SQL注入风险(若后续修改为直接拼接输入内容时)

修正后的代码

import mysql.connector

# 修复连接语句的括号缺失问题
db = mysql.connector.connect(
    host="localhost",
    user="user",
    password="password",
    database="users"
)

mycursor = db.cursor()

username = input("Username: ")

# 使用参数化查询,精准定位目标用户名,同时避免SQL注入
query = "SELECT username FROM users WHERE username = %s"
mycursor.execute(query, (username,))

# 检查是否有匹配结果
result = mycursor.fetchone()
if result:
    print("用户名已存在")
else:
    print("用户名可用")

# 及时关闭游标与数据库连接,避免资源占用
mycursor.close()
db.close()

关键改进点

  • 补上数据库连接语句的闭合括号,修复语法错误
  • 通过WHERE条件直接查询目标用户名,无需遍历全表,提升查询效率
  • 使用参数化查询方式,从根源避免SQL注入风险
  • 通过fetchone()一次性判断是否存在匹配结果,输出准确的最终结论
  • 添加游标与连接的关闭操作,养成资源清理的好习惯

内容的提问来源于stack exchange,提问作者Jaromír Staš

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:23:10