mac上で、pythonを利用してmysqlにデータを書き込もうとしたところ、下記エラーが発生しました。
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (61 Connection refused)
実行したファイルは、下記になります。
update_sql_from_csv.py
### インポート
import csv
import mysql.connector
### ファイルオープン
file = open("bme280_db.csv", "r")
### ファイル読み込み
members = csv.reader(file)
### DB接続
cnx = mysql.connector.connect(host='localhost', user='root', password='', database='bme280db')
### カーソル作成
cursor = cnx.cursor()
### INSERT文作成
sql = "INSERT INTO weather_forecast ( date_time, pressure, temperature, humidity) VALUES (%s, %s, %s, %s)"
### データ挿入
data_count = 0
for value in members:
if not data_count == 0:
### データ挿入実行
cursor.execute(sql, value)
data_count += 1
### コミット
cnx.commit()
### カーソルクローズ
cursor.close()
### DB切断
cnx.close()
### ファイルクローズ
file.close()
環境
環境は、下記の通り。MANPを利用し、サーバーは、起動済みです。
OS: macOS Catalina version 10.15.7
デバイス : MacBook Pro (Retina, 13-inch, Early 2013)
PHP version: 8.0.8
原因調査
こちらの記事を参考に、ひとつづ原因を潰していきました。
MySQLのポート番号
MySQLのデフォルトのポートは、3306。こちらが正しいかどうか調べてみました。
mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 8889 |
+---------------+-------+
1 row in set (0.01 sec)
違っていました。pythonのファイルの一部を下記のようにportを指定するように変更し、再度実行すると、エラーは解消しました。
cnx = mysql.connector.connect(host='localhost', port='8889', user='root', password='', database='bme280db')