如何从运行在googleappenginesdk上的Python应用访问本地MySQL实例?

2024-04-16 19:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我在Google开发者学院网站上学习了“使用Python应用引擎和googlecloudsql”教程。然而,我偶然发现了练习的第一部分“使用本地MySQL实例构建应用程序”。我无法连接示例代码(主.py)到我的本地MySQL实例。不知道是否有人找到了解决这个问题的办法。在

如果你能和我分享你如何设置你的MySQL,对它进行配置,这样GAE的沙盒就能访问MySQL python连接器,那就太好了。在


Tags: 实例代码py引擎应用程序示例网站google
2条回答

我曾经为一个项目做过这个。程序如下(对于Windows):

  1. 安装mysql服务器MYSQL 在安装过程中请注意 用户名和密码以及实例的名称应该是 像MySQL55<;取决于您安装的版本
  2. 加载并安装mysql python连接器MYSQL Python Connector
  3. 确保Mysql服务器正在运行
  4. 在应用程序中插入以下导入行:

    from google.appengine.api import rdbms
    

5。我所做的是创建一个返回数据连接的函数,如下所示:

^{pr2}$

然后查询数据库:

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的新手,并且在macosx上使用GAE进行开发,所以我花了一段时间才弄清楚如何让示例应用程序工作。因为我已经找到了解决方案,所以我想在这里分享它,这样您就可以按照我的步骤,使用本地MySQL实例在本地GAE-SDK环境中安装并运行示例应用程序。在

就我个人而言,我发现这非常有用和方便,因为对于开发人员来说,在将GAE应用程序部署到googleappenginepaas之前,在自己的机器上使用本地MySQL实例来开发他们的GAE应用程序是非常自然的。在

话虽如此,以下是我想分享的程序:

  1. 从安装MySQL dmgmysql.com网站社区站点(我的版本是mysql-5.5.30-osx10.6-x86_64.dmg)

  2. 修改~/.profile以添加这些环境变量(添加这些行) export PATH=/usr/local/mysql/bin:$PATH(或安装的任何版本的mysql) 导出DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

  3. 如果你还没有从苹果的AppStore安装Xcode。然后确保您也安装了“命令行工具”,从首选项“下载”部分。这一步是必要的,因为它将在下面的步骤4中安装gcc编译器(位于我的文件系统:/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2)来构建MySQL-python连接器。

  4. 然后运行“sudo easy_install MySQL python”(这样您就可以将应用程序连接到Mac上的本地MySQL实例)

  5. 因为googleappenginesdkforpython是一个沙箱环境,所以您需要在这个文件/usr/local/bin/dev中添加“import MySQLdb”_应用服务器.py将GAE的沙盒环境连接到本地MySQL实例。您需要在的[sample code][2]中进行以下更改“主.py“文件。在正确运行示例代码之前,请执行以下操作:

    • 在“import”部分添加“import MySQLdb”语句。在
    • 将“CLOUDSQL_INSTANCE=''”语句替换为“CLOUDSQL_INSTANCE='localhost'”。在
    • 因为MySQLdb包是与MySQL兼容的DB-API v2.0接口,所以需要重写“get_connection()”函数。MySQLdb的“connect()”函数无法理解参数:“instance”、“database”和“password”。要使用MySQLdb包访问本地MySQL实例,需要重写“get_connection”函数如下:
      
      def get_connection():
      return MySQLdb.connect(host=CLOUDSQL_INSTANCE, db=DATABASE_NAME,
      user=USER_NAME, passwd=PASSWORD, charset='utf8')
      
  6. 完成以上所有步骤后,现在可以通过执行以下命令来启动示例应用程序:“dev_应用服务器.py“.”在应用程序目录中。

  7. 如果您使用的是默认的8080端口,您可以将浏览器指向http://localhost:8080

  8. 享受并享受乐趣。

相关问题 更多 >