Данные MySQL кэшируются с помощью Google Cloud SQL и SQLAlchemy. - PullRequest
2 голосов
/ 06 апреля 2019

Это мой первый вопрос по stackoverflow, поэтому, пожалуйста, исправьте меня, если я что-то не так делаю:).

Мои данные из базы данных, размещенной в Google Cloud SQL, кэшируются с помощью Flask-SQLAlchemy.Когда я добавляю новую запись и пытаюсь получить эту запись, она не существует.

Я использую скрипт, который добавляет записи, и использую один для получения записей.

Сначала я попробовал егос SQLite, который работал отлично.Но с MySQL в Google Cloud SQL это не так.

Каждый раз, когда я добавляю / меняю что-то в базу данных, я использую db.session.commit()

Я использую модуль pymysql с этим: pymysql.install_as_MySQLdb()И URI моего подключения выглядит так: mysql://...

Редактировать: это то, что я использую для добавления новой записи (мой скрипт для добавления шуток):

new_joke = Jokes(joke, user["username"], user["id"], avatar_url, "0")
db.session.add(new_joke)
db.session.commit()

И эточто я использую, чтобы получить запись (случайную):

jokes = Jokes.query.all()
randint = random.randint(0, len(jokes) - 1)
joke = jokes[randint]

1 Ответ

1 голос
/ 07 апреля 2019

Я нашел ответ!

Выполняя db.session.commit() перед выполнением запроса, он обновляет свой кеш.

Мой код теперь выглядит следующим образом:

db.session.commit()
jokes = Jokes.query.all()
randint = random.randint(0, len(jokes) - 1)
joke = jokes[randint]
...