如何在本地设置谷歌云SQL

时间:2012-11-15 06:54:32

标签: mysql google-app-engine python-3.x

如何以一种既适用于GAE又适用于本地测试环境的方式在python中以编程方式设置Google Cloud SQL?

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

  

未安装或加载MySQLdb。

但是当我打开终端并编写python和python命令行时 环境运行。它在终端上运行良好,但在GAE中它表示 在GAE控制台中关注。

  

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

我正在使用python 2.7.3 for GAE。

2 个答案:

答案 0 :(得分:2)

您可以在以下链接中参考官方帮助/演练。

https://developers.google.com/appengine/docs/python/cloud-sql/#Python_Using_a_local_MySQL_instance_during_development

您需要遵循的重要事项是

  1. 确保MySql已在本地安装,您可以通过在终端中键入MySQL来访问它。
  2. 您必须在python路径中安装MySQLdb库。按照其INSTALL指南,不要忘记更改下载文件夹中的site.cfg中的mysql_config变量,否则将无法安装。 设置site.cfg后运行以下命令。确保终端中的当前目录是您刚刚从MySQLdb link

    下载的MySQLdb

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

  3. 在本地MySql中创建测试数据库或在该本地数据库中导入实时转储,以使本地和实时环境的表结构相同

  4. 以下是上页的简单代码,适用于本地和实时环境

  5. 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()
    

答案 1 :(得分:0)

再次阅读你的问题之后,好像你说你已经安装了MySQLdb但它没有被GAE发现。假设路径不是问题,您使用的是最新版本的SDK吗?另外要检查的是运行时 - 您使用python27作为GAE Python版本吗? Python 3.x与AppEngine不兼容,因此您将在python的{​​{1}}字段中使用python27runtime。不确定你是否说你可以在shell中导入它,但如果没有,你会想确保它在你的路径上(Linux:app.yaml)。

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

如果您使用的是Linux,请运行export PYTHONPATH="$PYTHONPATH:/path/to/MySQLdb/"。如果你正在使用其他东西(甚至是Linux),你可以找到库here