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

如何在Python MySQL连接中通过变量填入用户输入的数据库名称

代码问题说明

原代码存在2个核心逻辑错误:

  1. 执行顺序颠倒:初始化数据库连接时就尝试读取还未定义的user_input变量,此时用户还未输入数据库名,直接运行会抛出变量未定义的报错。
  2. 操作逻辑缺失:获取用户输入的数据库名后,没有执行切换数据库的操作,直接执行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
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:06