PyMySQL-Python:检查用户输入的电影名是否存在且仅出现一次
解决方案:判断输入电影标题是否存在且仅出现一次
嘿,我来帮你搞定这个需求!咱们的目标很明确:检查用户输入的电影标题既存在于Movies表中,又只出现过一次。下面我会从SQL查询逻辑到具体代码实现一步步给你讲清楚。
核心思路
我们需要完成两个关键判断:
- 输入的标题在表中存在(出现次数≥1)
- 该标题的出现次数恰好等于1
最直接的方式是先统计目标标题在表中的出现次数,再根据计数结果判断是否符合要求。
1. SQL查询逻辑
不管你用什么编程语言连接数据库,核心的SQL查询都可以这么写:
-- 统计指定标题的出现次数 SELECT COUNT(*) AS occurrence_count FROM Movies WHERE Title = '用户输入的标题';
- 如果返回的
occurrence_count是1:符合条件(存在且仅出现一次) - 如果是0:标题不存在
- 如果大于1:标题存在但重复出现
你也可以直接在SQL里返回判断结果,不用在程序里额外处理:
SELECT CASE WHEN COUNT(*) = 1 THEN '符合条件:存在且仅出现一次' WHEN COUNT(*) = 0 THEN '不符合:标题不存在' ELSE '不符合:标题存在但重复出现' END AS check_result FROM Movies WHERE Title = '用户输入的标题';
2. 完整代码示例(以Python + SQLite为例)
假设你用Python来实现这个功能,下面是可直接复用的代码,注释已经写得很清楚了:
import sqlite3 def validate_movie_title(input_title): # 连接数据库(这里用SQLite,其他数据库比如MySQL只需替换连接方式) conn = sqlite3.connect('your_movie_db.db') cursor = conn.cursor() # 用参数化查询避免SQL注入风险,这很重要! cursor.execute("SELECT COUNT(*) FROM Movies WHERE Title = ?", (input_title,)) count = cursor.fetchone()[0] # 关闭数据库连接 conn.close() # 根据计数返回结果和提示信息 if count == 1: return True, f"✅ 电影「{input_title}」存在且仅出现一次" elif count == 0: return False, f"❌ 电影「{input_title}」不存在于数据库中" else: return False, f"❌ 电影「{input_title}」存在但出现了{count}次,不符合要求" # 从键盘获取用户输入 user_title = input("请输入要查询的电影标题:") is_valid, msg = validate_movie_title(user_title) print(msg)
注意事项
- 参数化查询:一定要用
?(SQLite)或者%s(MySQL)这种占位符传递用户输入,不要直接拼接字符串,避免SQL注入攻击。 - 数据库适配:如果用的是MySQL、PostgreSQL等其他数据库,只需要修改数据库连接的代码(比如用
pymysql代替sqlite3),核心的统计逻辑完全一致。
内容的提问来源于stack exchange,提问作者stef
相关产品推荐
相关产品推荐

