如何在Python MySQL连接中通过变量填入用户输入的数据库名称
代码问题说明
原代码存在2个核心逻辑错误:
- 执行顺序颠倒:初始化数据库连接时就尝试读取还未定义的
user_input变量,此时用户还未输入数据库名,直接运行会抛出变量未定义的报错。 - 操作逻辑缺失:获取用户输入的数据库名后,没有执行切换数据库的操作,直接执行
SHOW TABLES无法对应到目标数据库。
实现方案
方案1:先获取输入再初始化连接(符合你要把库名填入连接配置database参数的需求)
import mysql.connector def choosedb(): # 先获取用户输入的数据库名 user_input = input("choose database name : ") # 拿到输入后再初始化连接,将输入填入database参数 mydb = mysql.connector.connect( host = 'localhost', port = '3306', user = 'root', password = '', database = user_input ) mycursor = mydb.cursor() mycursor.execute('SHOW TABLES') for tb in mycursor: print(tb) # 资源释放 mycursor.close() mydb.close() choosedb()
方案2:加输入校验的优化版本
提前拉取所有已存在的数据库展示给用户,避免输入无效库名报错:
import mysql.connector def choosedb(): # 先不指定database,连接到MySQL服务端 mydb = mysql.connector.connect( host = 'localhost', port = '3306', user = 'root', password = '' ) mycursor = mydb.cursor() # 查询所有可用数据库 mycursor.execute("SHOW DATABASES") exist_dbs = [db[0] for db in mycursor.fetchall()] print("当前可用数据库列表:") for db in exist_dbs: print(f"- {db}") # 循环校验输入有效性 while True: user_input = input("请输入要选择的数据库名:") if
相关产品推荐
相关产品推荐

