Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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 2.1和Python 3中修改settings.py以使用云数据存储_Django_Python 3.x_Google App Engine_Google Cloud Datastore - Fatal编程技术网

如何在Django 2.1和Python 3中修改settings.py以使用云数据存储

如何在Django 2.1和Python 3中修改settings.py以使用云数据存储,django,python-3.x,google-app-engine,google-cloud-datastore,Django,Python 3.x,Google App Engine,Google Cloud Datastore,我想在Django项目中使用google云数据存储。我迷路了。我有两种情况: 使用生产数据库运行google云数据存储 运行google云数据存储模拟器 我必须为不同的应用程序使用不同的数据库。就像我在使用mysql进行以下应用一样。My settings.py看起来像: if os.getenv('GAE_APPLICATION', None): # Running on production App Engine, so connect to Google Cloud SQL usi

我想在Django项目中使用google云数据存储。我迷路了。我有两种情况:

  • 使用生产数据库运行google云数据存储
  • 运行google云数据存储模拟器
  • 我必须为不同的应用程序使用不同的数据库。就像我在使用mysql进行以下应用一样。My settings.py看起来像:

    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/connectionnanme',
                'NAME': 'db name',
                'USER': 'user',
                'PASSWORD': 'pass',
            }
        }
    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',
                'PORT': '3307',
                'NAME': 'db name',
                'USER': 'user',
                'PASSWORD': 'pass',
            }
        }
    
    如果os.getenv('GAE_应用程序',无):
    #在生产应用程序引擎上运行,因此使用SQL连接到Google Cloud
    #位于/cloudsql的unix套接字/
    数据库={
    “默认值”:{
    'ENGINE':'django.db.backends.mysql',
    “主机”:“/cloudsql/connectionnanme”,
    '名称':'数据库名称',
    “用户”:“用户”,
    “密码”:“通过”,
    }
    }
    其他:
    #本地运行,因此连接到本地MySQL实例或连接到
    #通过代理云计算SQL。要通过命令行启动代理,请执行以下操作:
    #
    #$cloud\u sql\u proxy-instances=[INSTANCE\u CONNECTION\u NAME]=tcp:3306
    #
    #看https://cloud.google.com/sql/docs/mysql-connect-proxy
    数据库={
    “默认值”:{
    'ENGINE':'django.db.backends.mysql',
    “主机”:“127.0.0.1”,
    “端口”:“3307”,
    '名称':'数据库名称',
    “用户”:“用户”,
    “密码”:“通过”,
    }
    }
    
    现在我不知道如何配置我的settings.py文件,以便在这两种情况下查询我的数据存储。还有其他我需要配置的东西吗

    请分享您的知识或任何有用的文章


    谢谢。

    我想你不能在Django上那样做。Django与应用程序引擎和数据存储的关系……很奇怪


    在这里,您最好像往常一样直接使用,并且在运行本地服务器时,使用本地模拟器而不是生产数据库。

    如果您使用的是连接字符串,则需要在views.py(或需要连接到db的任何位置)中引用该字符串并从settings.py导入连接字符串。注意:如果要执行此操作,强烈建议您在环境变量中存储敏感数据,如密码。下面的“默认”数据库设置适用于开发计算机上的标准本地数据库。注意:可以通过多种方式配置google cloud mysql代理(请参阅)

    #views.py
    从django.conf导入设置
    客户端=设置。数据库['remote']['CONNECTION']
    db=客户机
    #设置.py
    导入pymysql
    如果os.getenv('GAE_应用程序',无):
    数据库={
    “远程”={
    'CONNECTION'=pymysql.connect(unix_socket='/cloudsql/'+,,
    用户=“”,
    密码=“”,
    db=“”)
    }
    }
    其他:
    数据库={
    “默认值”:{
    'ENGINE':'django.db.backends.mysql',
    '主机':'本地主机',
    “端口”:“,
    '名称':'数据库名称',
    “用户”:“用户”,
    “密码”:“通过”,
    }
    “远程”:{
    'CONNECTION'=pymysql.connect(host='127.0.0.1',
    用户=“”,
    密码=“”,
    db=“”)
    }
    }
    
    我看没问题,你有什么错误?我只是想知道,如何在这些数据库中使用谷歌云数据存储。我不知道如何将我的后端配置为数据存储。在emulator和appengine上都是本地的。是的。但我知道怎么做。我不知道的是,如何配置或如何在settings.py文件中放入数据库以使用datastore backend.ok那么我的理解是,如果您使用
    python manage.py runserver
    在本地运行它,您希望使用不同的数据库,并且当您在生产服务器上运行它时,您需要另一个数据库设置。但是,数据库后端的正确性如何呢settings.py是否使用数据存储?至于mysql,我们有完整的设置,我不知道如何为数据存储配置它。我不明白你的意思。数据存储调用不会进入
    settings.py
    文件,而是进入其他文件(例如,您实际调用数据存储的地方)。如果不打算使用其他数据库,只需从
    settings.py
     #views.py
    
     from django.conf import settings
    
     client = settings.DATABASES['remote']['CONNECTION']
     db = client
    
     #settings.py
    
     import pymysql
    
     if os.getenv('GAE_APPLICATION', None):     
    
         DATABASES = {
         'remote' = {
             'CONNECTION' = pymysql.connect(unix_socket='/cloudsql/' + <INSTANCE_CONNECTION_NAME>,
                             user='<USER>',
                             password='<PASSWORD>',
                             db='<DATABASE>')
           }
        }
    else:
    
         DATABASES = {
           'default': {
              'ENGINE': 'django.db.backends.mysql',
              'HOST': 'localhost',
              'PORT': '',
              'NAME': 'db name',
              'USER': 'user',
              'PASSWORD': 'pass',
           }
          'remote' : {
             'CONNECTION' = pymysql.connect(host='127.0.0.1',
                             user='<USER>',
                             password='<PASSWORD>',
                             db='<DATABASE>')
    
       }
    }