[PYTHON] SQLAlchemy를 Google Cloud SQL과 함께 사용할 수 있습니까?
PYTHONSQLAlchemy를 Google Cloud SQL과 함께 사용할 수 있습니까?
Google Cloud SQL의 문서 및 다양한 검색을 살펴 보았지만 SQLAlchemy를 Google Cloud SQL과 함께 사용할 수 있는지 여부와 그럴 경우 연결 URI가 무엇인지 알아낼 수 없습니다.
Flask-SQLAlchemy 확장을 사용하고 다음과 같은 연결 문자열이 필요합니다. mysql : // 사용자 이름 : password @ server / db
장고 예제를 보았지만 구성에서 연결 문자열과 다른 스타일을 사용하는 것으로 보입니다. https://developers.google.com/cloud-sql/docs/django
Google Cloud SQL 문서 : https://developers.google.com/cloud-sql/docs/developers_guide_python
해결법
-
==============================
1.최신 정보
최신 정보
Google Cloud SQL은 이제 직접 액세스를 지원하므로 MySQLdb 언어를 사용할 수 있습니다. mysql dialect를 통한 권장 연결은 URL 형식을 사용합니다.
mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename>
mysql + gaerdbms는 버전 1.0 이후 SQLAlchemy에서 더 이상 사용되지 않습니다.
다른 사람들이 여전히 도움이 될 경우에 대비하여 나는 원래의 대답을 남겨두고 있습니다.
이 질문을 나중에 (그리고 모든 코멘트를 읽고 싶지는 않은) 사람들에게 SQLAlchemy는 연결 문자열 / dialect (docs 참조)를 사용하여 0.7.8 버전에서 Google Cloud SQL을 지원합니다.
mysql+gaerdbms:///<dbname>
예 :
create_engine('mysql+gaerdbms:///mydb', connect_args={"instance":"myinstance"})
Google 이외의 App Engine 프로덕션 인스턴스 (예 : 개발 워크 스테이션)에서 Cloud SQL에 연결하기위한 두 가지 Google Cloud SQL API (rdbms_apiproxy 및 rdbms_googleapi)를 지원하는 mysql + gaerdmbs : // dialect에 대한 업데이트를 제안했습니다. 변경 사항은 또한 문자열의 일부로 프로젝트 및 인스턴스를 포함하여 연결 문자열을 약간 수정하며 connect_args를 통해 별도로 전달할 필요가 없습니다.
식
mysql+gaerdbms:///<dbname>?instance=<project:instance>
이것은 또한 Cloud SQL을 Flask-SQLAlchemy 또는 create_engine () 호출을 명시 적으로 작성하지 않는 다른 확장과 함께 사용하는 것을 더 쉽게 만듭니다.
개발 워크 스테이션에서 Google Cloud SQL에 연결하는 데 문제가있는 경우 https://stackoverflow.com/a/14287158/191902에서 내 대답을 살펴볼 수 있습니다.
-
==============================
2.예,
예,
SA + Cloud SQL에서 버그를 발견하면 알려주십시오. SQLAlchemy에 통합 된 사투리 코드를 작성했습니다. 클라우드 SQL이 예외를 버리는 방법에 대해 약간 바보 같은 사업이 있기 때문에 거기에 약간의 단점이있을 수 있습니다.
-
==============================
3.비록 내가 플라스크를 전혀 사용하지 않았음에도 불구하고 그것을 통해 연결을 설정하는 것에 대해 확신 할 수는 없지만 실행 가능합니다. 필자는 Pyramid를 통해 작업을하고 SQLAlchemy에 패치를 제출했습니다 (아마도 잘못된 repo에).
비록 내가 플라스크를 전혀 사용하지 않았음에도 불구하고 그것을 통해 연결을 설정하는 것에 대해 확신 할 수는 없지만 실행 가능합니다. 필자는 Pyramid를 통해 작업을하고 SQLAlchemy에 패치를 제출했습니다 (아마도 잘못된 repo에).
https://bitbucket.org/sqlalchemy/sqlalchemy/pull-request/2/added-a-dialect-for-google-app-engines
그 이후로 대체되었고 SQLAlchemy로 받아 들여졌습니다.
http://www.sqlalchemy.org/trac/ticket/2484
나는 그것이 릴리스에가는 길을 만들었다 고 생각하지 않는다.
Google SQL에서 여러 가지 예외가 발생하여 데이터베이스를 자동으로 배포하는 것과 같은 문제가 발생했습니다. 또한 두 번째 패치에서 언급 한 NullPool을 사용하여 연결 풀링을 비활성화해야합니다.
이후 NDB를 통해 데이터 저장소를 사용하기로 이동 했으므로 잠시 동안 이러한 수정 프로그램의 진행 상황을 따라 가지 않았습니다.
-
==============================
4.MySQLdb보다 PyMySQL을 선호하는 사람들 (받아 들인 답에서 제안되는)의 경우 SQLAlchemy 연결 문자열은 다음과 같습니다.
MySQLdb보다 PyMySQL을 선호하는 사람들 (받아 들인 답에서 제안되는)의 경우 SQLAlchemy 연결 문자열은 다음과 같습니다.
생산 용
mysql + pymysql : //
: @ / ? unix_socket = / cloudsql / 반드시 확인하십시오.
지역 개발
mysql + pymysql : //
: @localhost : 3306 / 클라우드 SQL 프록시를 시작했다고 가정하면 다음과 같습니다.
cloud_sql_proxy -instances =
= tcp : 3306
from https://stackoverflow.com/questions/10763171/can-sqlalchemy-be-used-with-google-cloud-sql by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] numpy 배열을 PySide QPixmap으로 변환 (0) | 2018.11.01 |
---|---|
[PYTHON] scapy에서 변경된 src / dst로 pcap에서 패킷 보내기 (0) | 2018.11.01 |
[PYTHON] 두 문자열이 파이썬에서 서로의 순열인지 확인하기 (0) | 2018.11.01 |
[PYTHON] Pandas : dtype 'object'를 int로 변환합니다. (0) | 2018.11.01 |
[PYTHON] 파이썬에서 MP3를 WAV로 변환하는 방법 (0) | 2018.11.01 |