問題の説明
今日初めて Python を使用して mysql に接続したとき、オンライン操作によるエラーを見つけました。
コードは以下のように表示されます:
import pymysql
DBHOST = "localhost"
DBUSER = "root"
DBPASS = "root"
DBNAME = "test"
try:
pymysql.connect(DBHOST,DBUSER,DBPASS,DBNAME)
print("mysql connect success")
except pymysql.Error as e:
print("mysql connect error")
エラーメッセージは次のとおりです。
Traceback (most recent call last):
File "D:\Python\PythonWorkSpace\TestWyh.py", line 8, in <module>
pymysql.connect(DBHOST,DBUSER,DBPASS,DBNAME)
TypeError: __init__() takes 1 positional argument but 5 were given
長い間確認した結果、データベースの基本構成に問題がないことがわかりました。なぜエラーが報告されたのかわかりません
pymysql.Connect()パラメータの説明
まず、このメソッドのパラメータを確認します: pymysql.Connect() パラメータの説明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
最も単純な接続では、IP、ポート、ユーザー名、パスワード、データベース名の基本的な 5 つの項目を設定するだけです。その他はオンデマンドで構成されます
問題を解く
偶然、別の書き方を目にしました。
import pymysql
# DBHOST = "localhost"
# DBUSER = "root"
# DBPASS = "root"
# DBNAME = "test"
try:
db = pymysql.connect(host='localhost', user='root', password='root', db='test')
print(db)
print("mysql connect success")
except pymysql.Error as e:
print("mysql connect error")
このメソッドは変数を渡す必要はありませんが、connect メソッド内の各変数の値 (主に 4 つの値) を直接示します。
ホスト(IP)、ユーザー(ユーザー名)、パスワード(パスワード)、データベース(データベース名)
コードは次のとおりで、リンクは正常に再開されます。
知らせ
注: ポート番号を設定する必要はありません。設定しないとエラーが報告されます。
要約する
理由はわかりませんが、データベースのバージョンに問題があるようです。私のmysqlバージョンは8.0です。パラメータが指定されていない可能性があり、混乱や失敗が発生します。