为什么 TypeError: __init__() 需要 1 个位置参数,但在运行 sql 命令时给出了 2 个

1 python mysql pycharm

import mysql.connector

conn = mysql.connector.connect(host='localhost', user='root', password='root', database='nlidb')
cur = conn.cursor()
stmt = "create table statistics(sno int(5), stat_ticker varchar(10) primary key, marketcap varchar(10), enterprise_value varchar(10), return_on_assets varchar(10), total_cash varchar(10), operating_cash_flow varchar(10), levered_free_cash_flow varchar(10), total_debt varchar(10), current_ratio varchar(10), gross_profit varchar(10), profit_margin varchar(10))"
cur.execute(stmt)
Run Code Online (Sandbox Code Playgroud)

我试图在我的数据库中创建一个表,但它给了我这个错误。

Traceback (most recent call last):
  File "G:/python/NLIDB/nlidb/database.py", line 3, in <module>
    conn = mysql.connector.connect('localhost', user='root', password='root', database='nlidb')
  File "G:\python\NLIDB\venv\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "G:\python\NLIDB\venv\lib\site-packages\mysql\connector\connection.py", line 57, in __init__
    super(MySQLConnection, self).__init__(*args, **kwargs)
TypeError: __init__() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗??提前致谢。

小智 5

从我在错误代码中注意到的

    File "G:/python/NLIDB/nlidb/database.py", line 3, in <module>
    conn = mysql.connector.connect('localhost', user='root', password='root', 
    database='nlidb')"
Run Code Online (Sandbox Code Playgroud)

你缺少传递 conn = mysql.connector.connect( host ='localhost',...)

它也将不会与MySQL模块工作,如果用户您刚刚分配值,密码等变量:

    user = 'root'
    password = 'root'
    host = 'localhost'
    database = 'db'
Run Code Online (Sandbox Code Playgroud)

然后尝试像这样运行一行:

    conn = mysql.connector.connect(host, user, password, database)
Run Code Online (Sandbox Code Playgroud)

但是,您可以先为变量赋值,然后编写以下行:

    conn = mysql.connector.connect(host=host, user=user, password=password, database=database)
Run Code Online (Sandbox Code Playgroud)

希望对某人有所帮助:)