32

Google Cloud SQL のドキュメントとさまざまな検索に目を通しましたが、Google Cloud SQL で SQLAlchemy を使用できるかどうか、できる場合は接続 URI をどうするべきかがわかりません。

Flask-SQLAlchemy 拡張機能を使用しようとしていますが、次のような接続文字列が必要です。 mysql://username:password@server/db

Django の例を見ましたが、構成は接続文字列とは異なるスタイルを使用しているようです。 https://developers.google.com/cloud-sql/docs/django

Google Cloud SQL ドキュメント: https://developers.google.com/cloud-sql/docs/developers_guide_python

4

5 に答える 5

52

アップデート

Google Cloud SQL が直接アクセスをサポートするようになったため、MySQLdb方言を使用できるようになりました。mysql ダイアレクト経由で推奨される接続は、URL 形式を使用することです。

mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename>

mysql+gaerdbms バージョン 1.0 以降、SQLAlchemy で廃止されました。

他の人がまだ役立つと思う場合に備えて、元の回答を以下に残します。


後でこの質問にアクセスする (すべてのコメントを読みたくない) 方のために、SQLAlchemy はバージョン 0.7.8 以降、接続文字列/方言を使用して Google Cloud SQL をサポートするようになりました (参照: docs ):

mysql+gaerdbms:///<dbname>

例えば:

create_engine('mysql+gaerdbms:///mydb', connect_args={"instance":"myinstance"})

Google App Engine 以外の本番インスタンス (開発ワークステーションなど) から Cloud SQL に接続するために、Google Cloud SQL API (と) の両方をサポートするように方言を更新することを提案しました。この変更により、プロジェクトとインスタンスを文字列の一部として含めることで、接続文字列もわずかに変更されます。mysql+gaerdmbs://rdbms_apiproxyrdbms_googleapiconnect_args

例えば

mysql+gaerdbms:///<dbname>?instance=<project:instance>

create_engine()これにより、Flask-SQLAlchemy や、明示的に呼び出しを行わない他の拡張機能で Cloud SQL を簡単に使用できるようになります。

開発ワークステーションから Google Cloud SQL への接続に問題がある場合は、https://stackoverflow.com/a/14287158/191902の私の回答をご覧ください。

于 2012-06-05T16:07:24.337 に答える
8

はい、

SA+Cloud SQL でバグを見つけた場合は、お知らせください。SQLAlchemy に統合された方言コードを書きました。Cloud SQL がどのように例外を発生させるかについては、ちょっとばかげたビジネスがあります。

于 2012-06-25T18:05:43.397 に答える
5

私はFlaskをまったく使用していないので、それを介して接続を確立するかどうかはわかりませんが、それは可能です。私はそれを Pyramid で動作させ、ここで SQLAlchemy (おそらく間違ったレポ) にパッチを提出しました:

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 がさまざまな例外をスローするという問題がいくつかあるため、データベースを自動的にデプロイするなどの問題がありました。また、2 番目のパッチで説明されているように、NullPool を使用して接続プールを無効にする必要があります。

それ以来、NDB を介してデータストアを使用するようになったため、これらの修正の進行状況をしばらく追跡していませんでした..

于 2012-05-26T03:29:31.463 に答える