2013-03-04 57 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. 享受和玩得開心。

相關問題