Google App Engine で MySQL を使用できません - MySQLdb モジュールの読み込みエラー: _mysql という名前のモジュールがありません。cloudSQL を使用しています

Google App Engine で MySQL を使用できません - MySQLdb モジュールの読み込みエラー: _mysql という名前のモジュールがありません。cloudSQL を使用しています

googleAppEngineLauncher を使用して、mysql 接続を試行しています。

ログを表示します

 File "/Users/kakshilshah/Desktop/hope/skeduleBackend/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Users/kakshilshah/Desktop/hope/skeduleBackend/django/db/backends/mysql/base.py", line 17, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named _mysql

私はやったpip install MySQL-python

のようなコマンドもpython manage.py dbshell機能し、cloudsql バックエンドに接続します。

そこにあるすべてのテーブルにアクセスできます。

しかし、実行すると同じエラーが発生します。

mysql 5.6 がインストールされています。

app.yamlに以下を追加します

- name: MySQLdb
  version: "latest"

ライブラリ ディレクトリを確認しましたが、mysqldb がなかったので、これも役に立ちません。

私の設定 -

import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
            'HOST': '173.194.xxx.xxx',
            'NAME': 'my_database',
            'USER': 'root',
            'PASSWORD': 'xxxxxxxx',
    }
}

答え1

MySQL-Python を pip 経由でインストールした場合、おそらく '_mysql' 拡張機能のビルドに失敗します。これは C 拡張機能であり、ビルドには MSVC++ 9.0 が必要です。

building '_mysql' extension

error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27

Windowsの場合、最善の解決策は、次のようなMySQL-pythonのバイナリインストーラを使用することです。http://sourceforge.net/projects/mysql-python必要に応じて Python 用の MSVC++ コンパイラをダウンロードできますが、C ヘッダーとライブラリを含む MySQL 開発者ビルドもインストールする必要があり、他の問題が発生する可能性があります。

もちろん、これは開発サーバー上でアプリをローカルに実行する場合にのみ重要です。App Engine Python ランタイムには、アプリをデプロイするリモート環境にすでに MySQLdb が含まれているためです。

答え2

もしあなたが私と同じように、Python 3.5 を搭載した Ubuntu サーバーを使用している場合、この問題を解決するために数時間苦労しました。Apache サーバーは、仮想環境を介して行った wsgi セットアップを使用して起動しませんでした。

そこで、pip install this と pip install that をすべて試してみました。参考までに、Python 3.5 の場合、python と django を介して mysql に接続するには、pip ライブラリ mysqlclient をインストールする必要があります。しかし、私はあなたと同じエラーを何度も受け取りました... 最終的に私がしたのは、次のように実行することでした。 easy_install mysqlclient これは単純なことです。easy_install が取得して一撃でインストールした依存関係が不足していたのだと思います。

幸運を祈ります。このページが、あなたや、トンネルの先の光を探してこのページを見つけた他の誰かの役に立つことを願っています。

関連情報