Может ли SQLAlchemy использоваться с Google Cloud SQL?

Я просмотрел документацию Google Cloud SQL и различные поисковые запросы, но я не могу выяснить, можно ли использовать SQLAlchemy с Google Cloud SQL, и если да, то каким должен быть 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 Solutions collect form web for “Может ли SQLAlchemy использоваться с Google Cloud SQL?”

    Обновить

    Google Cloud SQL теперь поддерживает прямой доступ, поэтому теперь можно использовать MySQLdb . Рекомендуемое соединение через диалоги mysql использует формат URL:

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

    mysql+gaerdbms устарел в SQLAlchemy с версии 1.0

    Я оставляю первоначальный ответ ниже, если другие все еще считают его полезным.


    Для тех, кто позже посещает этот вопрос (и не хочет читать все комментарии), SQLAlchemy теперь поддерживает Google Cloud SQL с версии 0.7.8, используя строку / диалект подключения (см .: docs ):

     mysql+gaerdbms:///<dbname> 

    Например:

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

    Я предложил обновление для mysql+gaerdmbs:// для поддержки обоих API Google Cloud SQL ( rdbms_apiproxy и rdbms_googleapi ) для подключения к Cloud SQL из экземпляра для производства, отличного от Google App Engine (например, рабочей станции разработки). Это изменение также немного изменит строку подключения, включив проект и экземпляр в качестве части строки, и не требует передачи отдельно через connect_args .

    Например

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

    Это также облегчит использование Cloud SQL с Flask-SQLAlchemy или другим расширением, если вы явно не create_engine() вызов create_engine() .

    Если у вас возникли проблемы с подключением к Google Cloud SQL с рабочей станции разработки, вы можете взглянуть на мой ответ здесь – https://stackoverflow.com/a/14287158/191902 .

    Да,

    Если вы обнаружили ошибки в SA + Cloud SQL, сообщите мне об этом. Я написал код диалекта, который был интегрирован в SQLAlchemy. Есть немного глупых дел о том, как Cloud SQL генерирует исключения, поэтому там могут быть некоторые свободные концы.

    это выполнимо, хотя я вообще не использовал 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, бросающими разные исключения, поэтому у нас были проблемы с такими вещами, как автоматическое развертывание базы данных. Вам также необходимо отключить объединение пулов с помощью NullPool, как указано во втором патче.

    С тех пор мы перешли к использованию хранилища данных через NDB, поэтому я не следил за прогрессом этих исправлений некоторое время.

    веселит,

    J

    Для тех, кто предпочитает PyMySQL над MySQLdb (что предлагается в принятом ответе), строки соединения SQLAlchemy:

    Для производства

    mysql+pymysql://<USER>:<PASSWORD>@/<DATABASE_NAME>?unix_socket=/cloudsql/<PUT-SQL-INSTANCE-CONNECTION-NAME-HERE>

    Пожалуйста,

    1. Добавьте, чтобы добавить экземпляр SQL к вашему app.yaml :

       beta_settings: cloud_sql_instances: <PUT-SQL-INSTANCE-CONNECTION-NAME-HERE> 
    2. Включите API-интерфейс SQL Admin, поскольку он кажется необходимым :

      https://console.developers.google.com/apis/api/sqladmin.googleapis.com/overview

    Для местного развития

    mysql+pymysql://<USER>:<PASSWORD>@localhost:3306/<DATABASE_NAME>

    учитывая, что вы запустили Cloud Proxy с помощью:

    cloud_sql_proxy -instances=<PUT-SQL-INSTANCE-CONNECTION-NAME-HERE>=tcp:3306

     
    Interesting Posts for Van-Lav

    Предпочтительный способ очистки многопроцессорной обработки (-1) в python

    Получить расширение python-markdown для вывода html-тегов с определенным атрибутом класса в Django?

    Установка селена на использование настраиваемого профиля, но он продолжает открываться по умолчанию

    Вставьте элемент по определенному индексу в список и верните обновленный список

    Python numpy: преобразовать строку в массив numpy

    Как загрузить файл (изображение) с помощью selenium, python

    Установите фрейм данных в платформу randomForest pyspark

    Python / MySQL – LOAD DATA LOCAL INFILE

    Как получить результаты от вложенной функции генератора Python?

    Ошибка наивного байесовского байеса

    gtk idle_add не работает?

    Эквивалент поздней статической привязки (PHP) на других популярных языках

    Python: изменение имени процесса с помощью setproctitle

    Создайте pandas DataFrame как правильный формат: `DataError: нет числовых типов для агрегирования`

    Как эффективно фильтровать строку в длинном списке слов в Python / Django?

    Python - лучший язык программирования в мире.