Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Django连接到Google云SQL_Django_Python 2.7_Google App Engine_Oauth 2.0_Google Cloud Sql - Fatal编程技术网

将Django连接到Google云SQL

将Django连接到Google云SQL,django,python-2.7,google-app-engine,oauth-2.0,google-cloud-sql,Django,Python 2.7,Google App Engine,Oauth 2.0,Google Cloud Sql,我正在尝试将Django连接到Google云SQL,在windows下使用python 2.7和Django 1.5。我浏览了本页上的说明: My settings.py文件具有以下格式的基本数据库设置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'INSTANCE': 'my_project:instance1', 'NAME': 'my_databa

我正在尝试将Django连接到Google云SQL,在windows下使用python 2.7和Django 1.5。我浏览了本页上的说明:

My settings.py文件具有以下格式的基本数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'INSTANCE': 'my_project:instance1',
        'NAME': 'my_database',
    }
}
当然,可以使用一个适当的SQL实例和通过GoogleAPI控制台的SQL提示符创建的数据库

当我第一次尝试运行
manage.py syncdb
以获取OAuth2令牌时,我得到以下结果:

操作错误:(2003,“无法连接到'localhost'上的MySQL服务器” (10061)”

在您询问之前,我确实确保django和google包都在我的PYTHONPATH中,以及“C:\Program Files(x86)\google\google\U appengine\lib\django-1.5”中


欢迎任何帮助

只有从AppEngine连接时,数据库配置才有意义。如果要使用django从本地计算机访问CloudSQL数据库,应该使用
google.appengine.ext.django.backends.rdbms
引擎

您可以在此处看到不同的配置选项:

编辑:谷歌.appengine.ext.django.backends.rdbms引擎已被弃用。如果您想从本地计算机连接到Google Cloud SQL,您应该使用IP连接。您可以使用云SQL实例IP(IPv4或IPv6),并使用标准的
django.db.backends.mysql
引擎进行连接。

在django中连接到Google云SQL的示例:
AppEngine标准,Python 2.7
: 来源


AppEngine Flexible
数据库={
“默认值”:{
#如果您使用云SQL for MySQL而不是PostgreSQL,请设置
#'ENGINE':'django.db.backends.mysql'而不是以下内容。
“引擎”:“django.db.backends.postgresql”,
'姓名':'投票',
“用户”:“,
“密码”:“,
#对于MySQL,设置“端口”:“3306”而不是下面的值
#本地运行的SQL代理实例也必须设置为tcp:3306。
“端口”:“5432”,
}
}
#在灵活的环境中,可以使用unix套接字连接到CloudSQL。
#在本地,您可以使用CloudSQL代理来代理本地主机连接
#以实例
数据库['default']['HOST']='/cloudsql/'
如果os.getenv('GAE_实例'):
通过
其他:
数据库['default']['HOST']=“127.0.0.1”#DB的IP地址

Source

谷歌云SQL第二代的设置如何?我无法将其发送到我更新了响应。您应该使用IP连接从Google外部进行连接。在GAE standard上部署时,我需要硬编码密码吗?@Aseem在生产环境中,您可以在
app.yaml
文件中定义环境变量,使它们可用于您的应用程序,并从
os.environ
导入它们。我使用了上面的代码,它在本地主机上运行良好,但在生产环境中运行不好。我在任何地方都找不到更好的建议。请帮忙@MartaHi@DineshRoy你发帖子已经有一段时间了,对不起,我没有看到。您是否部署了正确的
app.yaml
文件?
try:
    import MySQLdb  # noqa: F401
except ImportError:
    import pymysql
    pymysql.install_as_MySQLdb()

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/<your-cloudsql-connection-string>',
            'NAME': '<your-database-name>',
            'USER': '<your-database-user>',
            'PASSWORD': '<your-database-password>',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1', # DB's IP address
            'PORT': '3306',
            'NAME': '<your-database-name>',
            'USER': '<your-database-user>',
            'PASSWORD': '<your-database-password>',
        }
    }
# Install PyMySQL as mysqlclient/MySQLdb to use Django's mysqlclient adapter
# See https://docs.djangoproject.com/en/2.1/ref/databases/#mysql-db-api-drivers
# for more information
import pymysql  # noqa: 402
pymysql.install_as_MySQLdb()

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[YOUR-CONNECTION-NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1', # DB's IP address
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
        }
    }
DATABASES = {
    'default': {
        # If you are using Cloud SQL for MySQL rather than PostgreSQL, set
        # 'ENGINE': 'django.db.backends.mysql' instead of the following.
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'polls',
        'USER': '<your-database-user>',
        'PASSWORD': '<your-database-password>',
        # For MySQL, set 'PORT': '3306' instead of the following. Any Cloud
        # SQL Proxy instances running locally must also be set to tcp:3306.
        'PORT': '5432',
    }
}
# In the flexible environment, you connect to CloudSQL using a unix socket.
# Locally, you can use the CloudSQL proxy to proxy a localhost connection
# to the instance
DATABASES['default']['HOST'] = '/cloudsql/<your-cloudsql-connection-string>'
if os.getenv('GAE_INSTANCE'):
    pass
else:
    DATABASES['default']['HOST'] = '127.0.0.1' # DB's IP address