2013-03-04 56 views
1

最近,我正在通过Google Developers Academy网站上的“在Google云端SQL中使用Python App Engine”教程。但是,我偶然发现了“使用本地MySQL实例构建应用程序”练习的第一部分。我无法将示例代码(main.py)连接到本地MySQL实例。不知道有没有人找到解决这个问题的办法。如何从我在Google App Engine SDK上运行的Python应用程序访问本地MySQL实例?

如果您可以与我分享如何设置您的MySQL,配置它以便GAE的沙箱可以访问MySQL-python连接器,那将是非常好的。

回答

1

我设法为项目做了一段时间。步骤如下(适用于Windows):

  1. 安装注意到 的用户名和密码,该实例的名称在安装MySQL服务器MYSQL应该是 像MySQL55 < - 取决于你的版本安装
  2. Donwload和安装MySQL的Python接口MYSQL Python Connector
  3. 确保MySQL服务器正在运行
  4. 在你的应用程序中插入下面的导入行:

    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() 
1

由于我是新手到GAE,巨蟒,MySQL和Mac上的发展OS X与GAE,它真的花了我一段时间才弄清楚如何让示例应用程序工作。由于我找到了解决方案,因此我想在此分享它,以便您可以按照我的过程使用本地MySQL实例在本地GAE SDK环境中启动并运行示例应用程序。

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

说够了,下面是我想和大家分享的过程:

  1. 从mysql.com社区网站安装MySQL的伤害(我的版本是MySQL的,30年5月5日 - osx10.6-x86_64的.dmg)

  2. 修改你的〜/ .profile来添加这些环境变量(添加这些行) export PATH =/usr/local/mysql/bin:$ PATH(或者你安装MySQL的版本) export DYLD_LIBRARY_PATH =/usr/local/mysql/lib/

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

  4. 然后运行“命令的easy_install的MySQL蟒蛇”(这样你就可以在Mac上连接您的应用程序到本地MySQL实例)

  5. 由于谷歌的App Engine SDK的Python是一个沙盒环境,所以你会需要在该文件/usr/local/bin/dev_appserver.py中添加“导入MySQLdb”以将GAE的沙箱环境桥接到本地MySQL实例。您需要在“main.py”文件的[示例代码] [2]中进行以下更改。如下所示,然后才能正确运行示例代码:

    • 在“导入”部分添加“导入MySQLdb”语句。
    • 用“CLOUDSQL_INSTANCE ='localhost'”替换“CLOUDSQL_INSTANCE =''”语句。
    • 由于MySQLdb包是与MySQL的DB API v2.0兼容接口,因此需要重写“get_connection()”函数。 MySQLdb的“connect()”函数不能理解参数:“实例”,“数据库”和“密码”。要使用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_appserver.py。”在您的应用程序目录。

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

  8. 享受和玩得开心。

相关问题