我在settings.py中设置了mySQL数据库,如下所示:
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/myApp:europe-west1:myApp-instance',
'NAME': 'myApp',
'USER': 'myApp',
'PASSWORD': 'myApp', }}
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="myApp:europe-west1:myApp-instance"=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': '3306',
'NAME': 'myApp',
'USER': 'myApp',
'PASSWORD': 'myApp', }}
当我想在本地运行myApp时,必须首先在终端上运行以下命令:
./cloud_sql_proxy -instances="myApp:europe-west1:myApp-instance"=tcp:3306
而且很烦人……有没有办法将其集成到我的代码中?
例如,我会在设置中放置一些内容,这些内容会在'else:'之后立即自动运行命令。
但是我不知道该写些什么...什么主意?可能吗?
最佳答案
使用os.system
从Python代码运行shell命令:
os.system('./cloud_sql_proxy -instances=\"myApp:europe-west1:myApp-instance\"=tcp:3306')
或
subprocess
:subprocess.call(['./cloud_sql_proxy -instances=\"myApp:europe-west1:myApp-instance\"=tcp:3306'], shell=True)