質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3137閲覧

PythonからMySQLに接続できない

RarigoB

総合スコア26

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/01/23 06:05

環境
ubuntu16.04LTS
Python3.68 (Anaconda)
mysqlclient 1.3.14

-わからないこと-
PythonからMySQLに接続したいのですが、接続できていません。

実行したコード

Python

1import MySQLdb 2 3# データベースへの接続とカーソルの生成 4connection = MySQLdb.connect( 5 host='localhost', 6 user='root', 7 passwd='password', 8 db='python_db') 9cursor = connection.cursor() 10 11# 保存を実行 12connection.commit() 13 14# 接続を閉じる 15connection.close() 16

(パスワードはダミーです)

-エラーメッセージ-

Traceback (most recent call last): File "try1.py", line 8, in <module> db='python_db') File "/home/rarigo/anaconda3/lib/python3.6/site-packages/MySQLdb/__init__.py", line 85, in Connect return Connection(*args, **kwargs) File "/home/rarigo/anaconda3/lib/python3.6/site-packages/MySQLdb/connections.py", line 208, in __init__ super(Connection, self).__init__(*args, **kwargs2) _mysql_exceptions.OperationalError: (2006, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13)")

-試したこと-
mysql.sockがないということなので、
再起動しましたが、mysql.sockが作成されなかったので

sudo touch /tmp/mysql.sock

上記のコマンドを実行し、作成しました。
その後、再起動。
上記のプログラムを再度実行しましたが、エラーメッセージは変化なしでした。

tmp内を検索

ls /tmp/ | grep mysql.sock

結果

mysql.sock

上記のように存在しているようでした。

一応確認として、mysqlclientがインストールされていることも明示しておきます。

-mysqlclientのインストールされていることの明示-

conda list | grep mysqlclient

結果

mysqlclient 1.3.14 py36h7b6447c_0

-解決したいこと-
PythonからMySQLへmysqlclientを使用して接続し、データの編集ができるようにしたい。

この問題を解決に助力していただける方いましたらお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

別に unix socket 接続じゃなくてもよいと思うんですよね。
localhost を 127.0.0.1 に変えると TCP 接続になり問題を回避できます。

投稿2019/01/23 06:11

編集2019/01/23 06:12
set0gut1

総合スコア2413

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RarigoB

2019/01/23 06:27

回答ありがとうございます。 そちらのやり方は記載し忘れたのですが、すでに試していて正常に処理できました。 unix socketのほうで接続できない原因とはわかりませんか?
set0gut1

2019/01/23 06:31

なるほど。 ubuntu は /tmp/mysql.sock じゃなくて /var/run/mysqld/mysqld.sock ができると思います。 MySQLdb.connect の引数 unix_socket に正しい PATH を指定するといけるはずです。
RarigoB

2019/01/23 06:38

わかりました。ありがとうございます
RarigoB

2019/01/23 06:57

度々申し訳ありません。PATHの指定の仕方を教えてください
set0gut1

2019/01/23 07:01

MySQLdb.connect の中に unix_socket='/var/run/mysqld/mysqld.sock' を追加です
RarigoB

2019/01/23 08:11

ありがとうございました
set0gut1

2019/01/23 08:12

きたー!BAありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問