Python使用mysql.connector建表报TypeError参数错误如何解决
报错原因
mysql.connector.connect()方法仅支持关键字参数传入连接配置,不支持按位置顺序传参,你直接按位置传入5个配置参数,加上方法默认的self实例参数,总共6个参数,才触发了类型错误。- 额外隐藏问题:你定义的
port参数为字符串类型'3306',mysql连接要求port必须传入整数类型。
修正后可运行代码
import mysql.connector def add_tb(): host = 'localhost' port = 3306 # 修正为整数类型 user = 'root' password = '' database = input('请输入要创建表的数据库名称: ') # 所有参数显式指定参数名传入 mydb = mysql.connector.connect( host=host, port=port, user=user, password=password, database=database ) mycursor = mydb.cursor() tablename = input('请输入要创建的表名: ') # 增加表名校验,避免非法表名导致SQL执行错误或注入风险 if not tablename.replace('_', '').isalnum(): print('表名仅允许包含字母、数字和下划线') return mycursor.execute(f'create table {tablename} (name varchar (200), kelas int (4))') # 提交更改并释放资源 mydb.commit() mycursor.close() mydb.close() print(f'表 {tablename} 创建成功') add_tb()
补充注意事项
- 对用户输入的库名、表名建议加合法性校验,避免执行恶意SQL语句
- 数据库操作完成后要显式提交更改、关闭游标和连接,避免资源泄漏
内容的提问来源于stack exchange,提问作者golead rich
相关产品推荐
相关产品推荐

