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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

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

Python 3.x

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

Q&A

解決済

2回答

975閲覧

DjangoでデータベースでMySQLを使いたい

aushijima

総合スコア55

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

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

Python 3.x

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

0グッド

0クリップ

投稿2018/07/24 03:00

前提・実現したいこと

Pythonのwebのフレームワークに慣れるために、Djangoで簡単な管理画面を作ろうと思っています。その際に、デフォルトのSQLiteではなく、MySQLのデータベースを使用したいと思っていますが、

「AttributeError: module 'pymysql' has no attribute 'install_as_MYSQLdb'というエラーが出て困っています」

pymysqlというパッケージを入れるとMySQLが使用できると思っているのですが、mysqlclientなどもインストールが必要だったりしますか?PHPでは、MySQLを公式サイトからダウンロードして、インストールしたのですが、pythonなどでは、mysqlclientをインストールするのが一般的ですか?

発生している問題・エラーメッセージ

AttributeError: module 'pymysql' has no attribute 'install_as_MYSQLdb'というエラーが出ました。

問題が発生するまでの流れ・手順

python3系では、python-mysqlというパッケージが使えないという記事を見つけたため、PyMySQL というパッケージをインストールしました。
作成したプロジェクトにあるmanage.pyに

import pymysql pymysql.install_as_MYSQLdb()

という2行を追加しました。

その後
python manage.py runserverを実行するとAttributeError: module 'pymysql' has no attribute 'install_as_MYSQLdb'というエラーが出ました。

問題の発生した環境

python3系
windows10
MySQLなどは、まだインストールしていません。

またまた、初歩的な質問ですみません。

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

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

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

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

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

guest

回答2

0

まずMySQLをインストールしてください。

またディレクトリ名あるいはファイル名がpymysqlあるいはinstall_as_MYSQLdbになっているとAttributeError: module 'pymysql' has no attribute 'install_as_MYSQLdb'が発生します。
ディレクトリ名およびファイル名を確認してみてください。

わからなかったら公式のドキュメントを確認するのがよいです。
https://pymysql.readthedocs.io/en/latest/index.html

投稿2018/07/24 03:19

crimnut

総合スコア380

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

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

aushijima

2018/07/24 07:01

回答ありがとうございます。インストールしてみました。
guest

0

ベストアンサー

MySQLのサーバーは別途立ち上がってるということでよろしいですか?

DBに関する設定は、setting.pyの中に記載されています。
その内容を適切に変更すれば、接続できるはずです。

DATABASES = { 'default': { 'NAME': 'スキーマ名', 'ENGINE': 'django.db.backends.mysql', 'USER': 'ユーザー名', 'PASSWORD': 'パスワード', 'OPTIONS': { 'autocommit': True, }, } }

Pythonのパッケージ管理で、mysqlclientをインストールしてあれば、

pip install mysqlclient または pip3 install mysqlclient

動作するはずです。

なぜmanage.pyへ??
と思ったら、検索結果にでてくる記事に記載されているんですね。
この方法、私は知りませんでした(^_^;)

manage.pyは、Djangoアプリケーションのユーティリティなので、
基本、編集せずそのまま使うものだと思っていました。

追記

すいません、Windowsでしたね・・・見逃してました・・・

正直Windows環境は、わからないのですが、
PyPIをのぞいてみたところ、Wheel binaryからインストールする必要があるとのこと。

mysqlclient 1.3.13

ただ、そのbinaryの所在がはっきりしません・・・

さらに調べたら、下記のようなリンクにたどり着きました。
うまくいくかどうかはわかりませんが、一度試されてみてはいかかでしょうか?
中途半端な回答で申し訳ないです・・・

mysqlclientがWindowsでインストールできない

1.ダウンロード
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

上記のサイトの[mysqlclient]項目から、環境にあったwhlファイルをダウンロード

(自分の場合はpython3.4のamd64なのでmysqlclient‑1.3.9‑cp34‑cp34m‑win_amd64.whlでした。)

2.インストール
コマンドプロンプトでダウンロードフォルダまで移動

(環境にインストールする場合はactivate py3などで環境に入っておくこと)

pip install mysqlclient‑1.3.9‑cp34‑cp34m‑win_amd64.whl
これで桶

投稿2018/07/24 04:37

編集2018/07/24 07:48
Meganezaru

総合スコア715

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

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

aushijima

2018/07/24 07:09

回答ありがとうございます。 mysqlをインストールして、コマンドプロンプトを2つ立ち上げて、片一方でmysql -u root -pで起動して、pip install mysqlclient を実行した所mysql-connector-python 8.0.11 requires protobuf>=3.0.0, which is not installed. distributed 1.21.8 requires msgpack, which is not installed. というエラーが発生しました。 manage.pyの追記した所に記載したのが原因なのかもしれないです(^^;)
Meganezaru

2018/07/24 07:48

Windowsでしたね・・・見落としていました。 中途半端な内容ですが、回答に追記しました。
Meganezaru

2018/07/24 07:51

crimnutさんの回答にそって解決するほうが、早そうですね。
aushijima

2018/07/24 07:54

回答ありがとうございます。 色々と調べていただきありがとうございます。試してみます。 それと、サーバーを動かそうと思い、C:\Users\ユーザ名\PycharmProjects\my_env\mySite>python manage.py runserverを実行した所 Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x000002356C071950> Traceback (most recent call last): File "C:\Users\ushijima\Anaconda3\lib\site-packages\django\db\backends\mysql\base.py", line 15, in <module> import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb' というエラーが出ました。Anacondaが使われているみたいなので、Djangoが使われるような設定も必要だったりしますか?
Meganezaru

2018/07/24 08:33

内容をみる限り、manage.pyに追加した2行が影響しているエラーですね。 その2行を生かすのであれば、MySQLdbが正しくインストールされた状況を作る必要があると思います。
aushijima

2018/07/25 01:18

回答ありがとうございます。Pythonを使用してでの開発現場は、経験したことないのですが、一般的には、manage.pyではなくどこのディレクトリに配置するのが一般的ですか?
Meganezaru

2018/07/25 02:04

manage.pyに追加する記述については、正直、私には何をしているのか理解できていないですので、説明できず、申し訳ないです(>_<) MySQLdb、mysqlclientともに、MySQLとの接続をpythonから行うライブラリで、どちらか一方を利用すれば良いはずです。 MySQLdbを利用するのであれば、crimnutさんの回答を参考にして、MySQLdbを正しくインストールする必要があります。その場合は、manage.pyへの記述も必要になるでしょう。 mysqlclientを利用するのであれば、manage.pyの2行の記述を削除する必要があります。 その場合は、mysqlclientのインストールを正しく完了してください。 そして、申し訳ないですが、Windows環境での構築経験がないので、 あくまで、机上の話になってしまいますが、ご了承ください。
aushijima

2018/07/26 07:27

インストールを手順どおりにやったらうまく接続できて、データベースのテーブルの方に登録までできました。ありがとうございました。
Meganezaru

2018/07/26 07:54

おつかれさまでした! 解決してよかったです。 そして、中途半端な回答で申し訳なかったです(>_<)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問