如何在MAMP中使用mysql-connector-python?

iai*_*inH 2 python mysql

命令行mysql按预期工作:

mysql --host=localhost --user=django3 --password=django3 \
      --database=django3 --port=8889
Run Code Online (Sandbox Code Playgroud)

生产:

...
Server version: 5.5.34 Source distribution
...
Run Code Online (Sandbox Code Playgroud)

但是下面的脚本(改编自mysql-connector-python == 1.2.3网站)产生:

2003: Can't connect to MySQL server on 'localhost:8889' \
     (61 Connection refused)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

import mysql.connector
from mysql.connector import errorcode
try:
    cnx = mysql.connector.connect(user='django3', password='django3',
                              host='localhost', port='8889',
                              database='django3')
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exists")
  else:
    print(err)
else:
  cnx.close()
Run Code Online (Sandbox Code Playgroud)

注意

此脚本在LAN上使用MySQL服务器,但在尝试使用本地MAMP MySQL服务器时则不行.因此,只要我有这个问题,开发环境就不那么便携!

iai*_*inH 6

经过一番狩猎,我意识到我需要明确MAMP使用的unix套接字.

因此,问题中测试程序中连接表达式中的行需要修改如下:

 ...
 host='localhost', port='8889',  \
 unix_socket='/Applications/MAMP/tmp/mysql/mysql.sock',
 ...
Run Code Online (Sandbox Code Playgroud)