如何从运行在Google app Engine SDK上的Python应用访问本地MySQL实例?

如何从运行在Google app Engine SDK上的Python应用访问本地MySQL实例?,python,mysql,google-app-engine,mysql-python,Python,Mysql,Google App Engine,Mysql Python,最近,我正在谷歌开发者学院网站上学习“使用Python应用程序引擎和谷歌云SQL”教程。然而,我偶然发现了练习的第一部分“使用本地MySQL实例构建应用程序”。我无法将示例代码(main.py)连接到本地MySQL实例。不知道是否有人找到了解决这个问题的办法 如果您能与我分享您如何设置MySQL,如何配置它,以便GAE的沙箱能够访问MySQL python连接器,那将是一件非常棒的事情。我曾经为一个项目成功地做到了这一点。步骤如下(适用于Windows): 在安装过程中安装mysql服务器请注意

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


如果您能与我分享您如何设置MySQL,如何配置它,以便GAE的沙箱能够访问MySQL python连接器,那将是一件非常棒的事情。

我曾经为一个项目成功地做到了这一点。步骤如下(适用于Windows):

  • 在安装过程中安装mysql服务器请注意 用户名和密码以及实例的名称应该是
    就像MySQL55一样,由于我是GAE、Python、MySQL的新手,并且使用GAE在macosx上开发,所以我花了一段时间才弄清楚如何让示例应用程序工作。因为我已经找到了解决方案,所以我想在这里分享它,这样您就可以按照我的过程使用本地MySQL实例在本地GAE SDK环境中启动并运行示例应用程序

    就我个人而言,我发现这非常有用和方便,因为开发人员在自己的机器上使用本地MySQL实例开发GAE应用程序,然后再将其部署到Google App Engine PaaS上,这是非常自然的

    说得够多了,下面是我想分享的程序:

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

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

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

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

  • 由于Google App Engine SDK for Python是一个沙盒环境,因此您需要在这个文件/usr/local/bin/dev_appserver.py中添加“import MySQLdb”,以将GAE的沙盒环境连接到本地MySQL实例。您需要在“main.py”文件的[sample code][2]中进行以下更改。在正确运行示例代码之前,请执行以下操作:

    • 在“导入”部分添加“导入MySQLdb”语句
    • 将“CLOUDSQL\u INSTANCE=''”语句替换为“CLOUDSQL\u INSTANCE='localhost'”
    • 需要重写“get_connection()”函数,因为MySQLdb包是与MySQL兼容的DB API v2.0接口。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')
      
  • 完成上述所有步骤后,现在可以通过在应用程序目录中执行以下命令来启动示例应用程序:“dev_appserver.py.”

  • 如果使用默认的8080端口,则可以将浏览器指向
    http://localhost:8080

  • 享受并享受乐趣

  • 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()
    
    
    def get_connection():
    return MySQLdb.connect(host=CLOUDSQL_INSTANCE, db=DATABASE_NAME,
    user=USER_NAME, passwd=PASSWORD, charset='utf8')