如何在Django 2.1和Python 3中修改settings.py以使用云数据存储
我想在Django项目中使用google云数据存储。我迷路了。我有两种情况:如何在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
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>')
}
}