2012-11-15 6 views
1

GAE와 로컬 테스트 환경에서 모두 작동하는 방식으로 Google Cloud SQL을 프로그래밍 방식으로 Python으로 설정하려면 어떻게해야합니까?로컬로 Google Cloud SQL을 설치하는 방법

내가 설정은 로컬 콘솔은 항상

MySQLdb 설치하거나로드되지 않았 음을 말할 때. 하지만 터미널을 열고 파이썬과 파이썬 커맨드 라인 환경을 작성하면 envirement가 실행됩니다. 그것은 터미널에서 잘 작동하지만, GAE는 GAE 콘솔에서 다음과 같이 말합니다.

"MySQLdb 라이브러리를로드 할 수 없기 때문에 rdbms API를 사용할 수 없습니다."

GAE 용 Python 2.7.3을 사용하고 있습니다.

도와주세요!

답변

0

질문을 다시 읽은 후에 MySQLdb를 설치했지만 GAE가 발견하지 못했다고 생각하는 것 같습니다. 경로가 문제가 아니라고 가정하면 최신 버전의 SDK를 사용하고 있습니까? 확인해야 할 추가 사항은 런타임 일 것입니다. python27을 GAE Python 버전으로 사용하고 있습니까? Python 3.x는 AppEngine과 호환되지 않으므로, app.yamlruntime 필드에 python 또는 python27을 사용합니다. 쉘에서 제대로 가져올 수 있다고 말하면 확실하지 않지만 그렇지 않다면 경로에 있는지 확인해야합니다 (Linux : export PYTHONPATH="$PYTHONPATH:/path/to/MySQLdb/").

Cloud SQL을 로컬에서 사용하려면 MySQLdb 라이브러리가 설치되어 있어야합니다. MySQLdb는 Python이 MySQL 데이터베이스에 연결할 수있게 해주는 라이브러리이며, Cloud SQL을 로컬로 시뮬레이션 할 때 로컬 MySQL 데이터베이스에 연결하는 것을 설정하는 것입니다. 따라서 파이썬 -> MySQL 상호 작용을 처리 할 수있는 라이브러리를 설치해야하며 MySQLdb는 GAE에서 요구하는 라이브러리입니다.

Linux를 사용하는 경우 sudo apt-get install python-mysqldb을 실행하십시오. 다른 것 (또는 심지어 리눅스)을 사용하고 있다면, here 라이브러리를 찾을 수 있습니다.

+0

내가 맥 OS X의 소송을 제기하고있다. 그리고 Google 애플 리케이션 엔진은 이제 Python 2.x에서 지원됩니다. – user1799469

+0

@ user1799469'app.yaml'에서 런타임 변수로'python27' 또는'python'을 사용합니까? 가장 좋은 추측은이 버전이 SDK 버전 또는 사용중인 런타임과 관련이 있다는 것입니다. – RocketDonkey

+0

나는 python27을 런타임 환경으로 가지고있다. – user1799469

2

아래 링크에서 공식 도움말/워크 스루를 참조 할 수 있습니다.

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

당신이 따라야 할 중요한 일들이

  1. 확실 MySQL이 로컬로 설치되어 있는지 확인하고 터미널에서 MySQL의 입력을 통해 액세스 할 수 있습니다.
  2. 파이썬 경로에 MySQLdb 라이브러리를 설치해야합니다. INSTALL 가이드를 따르고 다운로드 한 폴더에서 site.cfg의 mysql_config 변수를 변경하는 것을 잊지 마십시오. 그렇지 않으면 설치되지 않습니다. site.cfg를 설정 한 후 아래 명령을 실행하십시오. 터미널에서 반드시 현재 디렉토리를 확인하면 그냥 MySQLdb link

    sudo는 /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python 설정에서 다운로드 MySQLdb입니다.평

  3. 로컬 MySQL의에서 테스트 데이터베이스를 만들거나 테이블 구조가 로컬 및 실제 환경 아래

  4. 에 대한 동일하도록, 즉 로컬 데이터베이스에 라이브 덤프를 가져올 설치하는 것은 위의 간단한 코드입니다 지역에서 작동 페이지뿐만 아니라 실제 환경

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() 
관련 문제