1

如何以在 GAE 和本地测试环境中都适用的方式在 python 中以编程方式设置谷歌云 SQL?

当我在本地设置时,控制台总是说:

MySQLdb 未安装或加载。

但是当我打开终端并编写 python 和 python 命令行环境运行时。它在终端中运行良好,但在 GAE 中它在 GAE 控制台中显示以下内容。

RDBMS API 不可用,因为无法加载 MySQLdb 库。

我正在为 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库。按照它的安装指南,不要忘记更改下载文件夹中可用的 site.cfg 中的 mysql_config 变量,否则将无法安装。设置好 site.cfg 后运行以下命令。确保终端中的当前目录是您刚刚从MySQLdb 链接下载的 MySQLdb

    sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py install

  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 吗?要检查的另一件事是您的运行时 - 您是否使用python27GAE Python 版本?Python 3.x 与 AppEngine 不兼容python,因此您将python27runtime. app.yaml不确定您是否说可以在 shell 中正常导入它,但如果不是,您需要确保它在您的路径上(Linux: export PYTHONPATH="$PYTHONPATH:/path/to/MySQLdb/")。

为了在本地使用 Cloud SQL,您必须安装 MySQLdb 库。MySQLdb 是一个允许 Python 连接 MySQL 数据库的库,当您在本地模拟 Cloud SQL 时,您所做的就是建立与本地 MySQL 数据库的连接。因此,您需要安装一个可以处理 Python->MySQL 交互的库,而 GAE 需要的是 MySQLdb。

如果您在 Linux 上,请运行sudo apt-get install python-mysqldb. 如果您使用其他东西(甚至是 Linux),您可以在此处找到该库。

于 2012-11-15T07:01:30.487 回答