Является ли кэширование объекта подключения причиной не найденных записей? Использование python3 .x и mysqldb - PullRequest
0 голосов
/ 15 февраля 2020

Это мой код:

@lru_cache(maxsize=1)
def connect(username, database, hostname, password):
    try:
        connection = pymysql.connect(
            db=database,
            host=hostname,
            user=username,
            passwd=password,
        )
    except Exception as ERROR:
        logger.critical("Connection Issue: %s", ERROR)
        sys.exit(1)
    return connection


class KlondikeConnection:
    def query(self, ids):
        secret = self.get_secret()
        logger.info("Retrieved Klondike Secrets")
        connection = connect(secret["username"], secret["database"], secret["hostname"], secret["password"])
        cursor = connection.cursor(pymysql.cursors.DictCursor)
        logger.info("Executing Klondike mapping select query")
        cursor.execute(self.build_query(), ids)
        record = cursor.fetchone()
        logger.info("Executed Klondike mapping select query")
        logger.info(f"record: {record}")

        return record

По сути, я обнаружил, что новые записи, которые были добавлены в базу данных между созданным объектом соединения и когда был выполнен поиск, не были найдены, когда я кэшировать объект подключения, но когда я удаляю декоратор lru_cache, новые записи были найдены. Сохраняют ли объекты соединения внутреннюю временную метку? Есть идеи, почему это может происходить?

...