1

GAE とローカル テスト環境の両方で動作するように、python でプログラムによって Google クラウド SQL を設定するにはどうすればよいですか?

ローカルでセットアップすると、コンソールには常に次のように表示されます。

MySQLdb がインストールまたはロードされていません。

しかし、ターミナルを開いて python と書くと、python コマンドライン環境が実行されます。ターミナルでは正常に動作しますが、GAE では GAE コンソールで次のように表示されます。

MySQLdb ライブラリをロードできなかったため、RDBMS API を使用できません。

GAEにpython 2.7.3を使用しています。

4

2 に答える 2

2

以下のリンクで公式ヘルプ/ウォークスルーを参照できます。

https://developers.google.com/appengine/docs/python/cloud-sql/#Python_Using_a_local_MySQL_instance_during_development

あなたが従わなければならない重要なことは、

  1. MySql がローカルにインストールされていることを確認し、ターミナルで「MySQL」と入力してアクセスできるようにします。
  2. Python パスにMySQLdbライブラリをインストールする必要があります。その INSTALL ガイドに従い、ダウンロードしたフォルダーで利用可能な site.cfg の mysql_config 変数を変更することを忘れないでください。そうしないと、インストールされません。site.cfg を設定した後、以下のコマンドを実行します。ターミナルの現在のディレクトリが、MySQLdbリンクからダウンロードしたMySQLdbであることを確認してください

    sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py インストール

  3. ローカルMySqlでテストデータベースを作成するか、そのローカルデータベースにライブダンプをインポートして、ローカル環境とライブ環境の両方でテーブル構造が同じになるようにします

  4. 以下は、ローカル環境とライブ環境で動作する上記のページの簡単なコードです。

import os
import MySQLdb
import webapp2

INSTANCE_NAME = 'your-project-id:your-instance-name'

class SQ(webapp2.RequestHandler):
    def get(self):
        # Display existing guestbook entries and a form to add new entries.
        if (os.getenv('SERVER_SOFTWARE') and
            os.getenv('SERVER_SOFTWARE').startswith('Google App Engine/')):
            db = MySQLdb.connect(unix_socket='/cloudsql/' + INSTANCE_NAME, db='guestbook', user='root')
        else:
            db = MySQLdb.connect(host='127.0.0.1', port=3306, db='guestbook', user='root')

        cursor = db.cursor()
        cursor.execute('select id,guestName,content from enteries')

        for row in cursor.fetchall():
            self.response.write("(id) " + str(row[0]) + " | (name) " + str(row[1]) + " | (content) " + str(row[2]) + "</BR>" )

        db.close()
于 2013-12-10T10:36:28.683 に答える
0

質問をもう一度読んだ後、MySQLdb をインストールしたと言っているようですが、GAE によって検出されていません。パスが問題ではないと仮定すると、SDK の最新バージョンを使用していますか? もう 1 つ確認する必要があるのはランタイムpython27です。GAE Python バージョンとして使用していますか? Python 3.x は AppEngine と互換性がないため、 のフィールドでpythonまたはを使用します。シェルで問題なくインポートできると言っているのかどうかはわかりませんが、そうでない場合は、パス上にあることを確認する必要があります (Linux: )。python27runtimeapp.yamlexport PYTHONPATH="$PYTHONPATH:/path/to/MySQLdb/"

Cloud SQL をローカルで使用するには、MySQLdb ライブラリをインストールする必要があります。MySQLdb は、Python が MySQL データベースに接続できるようにするライブラリです。Cloud SQL をローカルでシミュレートするときは、ローカルの MySQL データベースへの接続を設定していることになります。したがって、Python->MySQL の対話を処理できるライブラリをインストールする必要があります。MySQLdb は GAE に必要なものです。

Linux を使用している場合は、 を実行しますsudo apt-get install python-mysqldb他のもの (または Linux) を使用している場合は、ここでライブラリを見つけることができます。

于 2012-11-15T07:01:30.487 に答える