Google Cloud Flask SQL - PullRequest
       20

Google Cloud Flask SQL

0 голосов
/ 21 мая 2018

Я занимаюсь разработкой сайта для собственного портфолио.Я хотел перейти на облачный сервис Google.У меня работает приложение и работает база данных.Я могу подключиться через ip, но если другой экземпляр get создает, ip должен быть сначала занесен в белый список.

SQLAlchemly url - это то, что я видел, это anwser.Но я хочу продолжать работать с peewee, если это возможно.

Может кто-нибудь объяснить мне, почему мой код не подключен из движка приложения к облаку sql.

Мой код

    """Main script for the blog website."""
from flask import Flask
from peewee import *
from livereload import Server, shell
from flask_uploads import UploadSet, IMAGES, configure_uploads
from flask_login import LoginManager, login_user
from jinja2 import Environment
import os
from playhouse.db_url import connect
import pymysql

# db = connect(host='127.0.0.1', port=3306, user='root', password='fakepassword')
# db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='fakepassword')
try:
    db = connect('sqlite:///root:fakepassword@/DATABASE?unix_socket=/cloudsql/austinbakkerblog:us-west1:database')
except Exception:
    print('did not connect to database')
# 'mysql+mysqldb://%s:%s@/blog?unix_socket=/cloudsql/%s'


app = Flask(__name__)
app.config.from_pyfile('config.py', silent=False)
DEBUG = app.debug


# db = MySQLDatabase('database')
# db.connect()

# db = connect('mysql://root:fakepassword@127.0.0.1:3306/database')
# db = connect('mysql://root:fakepassword@/DATABASE?unix_socket=/cloudsql/austinbakkerblog:us-west1:database')
# db = connect('mysql://root:fakepassword@/cloudsql/austinbakkerblog:us-west1:database')
# db = connect('mysql://root:fakepassword@cloudsql/austinbakkerblog:us-west1:database')
# print(db.connect())


login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'


photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)

import models
from views import *


    if __name__ == '__main__':
        models.initialize()
        print('=' * 100)
        app.run()

Если кто-то готов помочь этомуУдивительно, я потратил последние сутки, пытаясь заставить его работать, но безуспешно.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Так что после нескольких дней шлифовки я получил его на работу.Не уверен, как именно, но это

app.yaml

works. runtime: python
env: flex
entrypoint: gunicorn -b :$PORT app:app

runtime_config:
    python_version: 3


env_variables:

    SQL_USER: root
    SQL_PASSWORD: test
    SQL_DATABASE: database
    INSTANCE_CONNECTION_NAME: austinbakkerblog:europe-west2:mydatabase1


beta_settings:
    cloud_sql_instances: "austinbakkerblog:europe-west2:mydatabase1"

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 2
  cpu_utilization:
    target_utilization: 0.5

app.py

"""Main script for the blog's website."""
from flask import Flask
from peewee import *
from livereload import Server, shell
from flask_uploads import UploadSet, IMAGES, configure_uploads
from flask_login import LoginManager, login_user
from jinja2 import Environment
import os
import pymysql


db = MySQLDatabase(host='127.0.0.1', user='root', password='test', unix_socket='/cloudsql/austinbakkerblog:europe-west2:mydatabase1', database='database')

print(db.connect())
print(db.close())
0 голосов
/ 22 мая 2018

Вместо того, чтобы использовать URL-адрес соединения, отладка может быть проще, если вы просто настроите соединение с базой данных напрямую.

Например,

db = MySQLDatabase('db_name', user='root', password='dbpassword',
                   host='googlecloud.whatever.com', port=31337)

Можете ли вы получить pymysql дляподключения

...