最近,我正在浏览 Google Developers Academy 网站上的“将 Python App Engine 与 Google Cloud SQL 一起使用”教程。但是,我偶然发现了练习“使用本地 MySQL 实例构建应用程序”的第一部分。我无法将示例代码 (main.py) 连接到我的本地 MySQL 实例。想知道是否有人找到了解决此问题的方法。
如果您能与我分享您如何设置 MySQL、配置它以便 GAE 的沙箱能够访问 MySQL-python 连接器,那就太好了。
最近,我正在浏览 Google Developers Academy 网站上的“将 Python App Engine 与 Google Cloud SQL 一起使用”教程。但是,我偶然发现了练习“使用本地 MySQL 实例构建应用程序”的第一部分。我无法将示例代码 (main.py) 连接到我的本地 MySQL 实例。想知道是否有人找到了解决此问题的方法。
如果您能与我分享您如何设置 MySQL、配置它以便 GAE 的沙箱能够访问 MySQL-python 连接器,那就太好了。
我设法为一个项目做了一段时间。程序如下(适用于 Windows):
在您的应用程序中插入以下导入行:
from google.appengine.api import rdbms
5. 我所做的是创建一个返回数据连接的函数,如下所示:
def conn_to_db():
return rdbms.connect(instance='MySQL55', database='Your_db_name_here', user='root', password='whatever_password_you_chose')
然后查询数据库:
conn = conn_to_db()
cursor = conn.cursor()
cursor.execute('SELECT * FROM foo where foos = %s', (bar))
for row in cursor.fetchall():
var1 = row[0]
var2 = row[1]
conn.close()
由于我是 GAE、Python、MySQL 和使用 GAE 在 Mac OS X 上开发的新手,我确实花了一段时间才弄清楚如何让示例应用程序正常工作。既然我找到了解决方案,我想在这里分享它,这样您就可以按照我的步骤在您的本地 GAE SDK 环境中使用本地 MySQL 实例启动并运行示例应用程序。
就个人而言,我发现这非常有用和方便,因为对于开发人员来说,在将 GAE 应用程序部署到 Google App Engine PaaS 上之前,在他们自己的机器上使用本地 MySQL 实例开发他们的 GAE 应用程序是很自然的。
说得够多了,下面是我想分享的过程:
从 mysql.com 社区站点安装 MySQL dmg(我的版本是 mysql-5.5.30-osx10.6-x86_64.dmg)
修改您的 ~/.profile 以添加这些环境变量(添加这些行) export PATH=/usr/local/mysql/bin:$PATH (或您安装的任何 MySQL 版本) export DYLD_LIBRARY_PATH=/usr/local/mysql /lib/
如果您还没有这样做,请从 Apple 的 AppStore 安装 Xcode。然后确保您还从首选项“下载”部分安装了“命令行工具”。这一步是必要的,因为它将安装一个 gcc 编译器(位于我的文件系统:/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2)以在下面的第 4 步中构建 MySQL-python 连接器。
然后运行“sudo easy_install MySQL-python”(这样您就可以将应用程序连接到 Mac 上的本地 MySQL 实例)
由于适用于 Python 的 Google App Engine SDK 是沙箱环境,因此您需要在此文件 /usr/local/bin/dev_appserver.py 中添加“import MySQLdb”,以将 GAE 的沙箱环境桥接到本地 MySQL 实例。您需要在“main.py”文件的 [示例代码][2] 中进行以下更改。在您可以正确运行示例代码之前如下所示:
def get_connection():
return MySQLdb.connect(host=CLOUDSQL_INSTANCE, db=DATABASE_NAME,
user=USER_NAME, passwd=PASSWORD, charset='utf8')
完成上述所有步骤后,您现在可以通过执行以下命令启动示例应用程序:“dev_appserver.py”。在您的应用程序目录中。
如果您使用默认的 8080 端口,您可以将浏览器指向http://localhost:8080
.
享受并玩得开心。