백엔드 개발 파이썬 튜토리얼 이번 주에 배운 것 #0

이번 주에 배운 것 #0

Jul 25, 2024 pm 10:54 PM

What I

적어도 내 개인적인 경험의 관점에서 볼 때 나는 매주 하나 이상의 새로운 것을 배우고 있습니다. 그래서 여기에서 공유하는 것이 지식의 일부를 확고히 하고, 기록을 유지하며, 잠재적으로 다른 사람이 이전에 알지 못했던 것을 배울 수 있도록 돕는 좋은 방법이 될 것이라고 생각했습니다.

이번 주에 저는 데이터베이스 백업 이름 목록을 가져오고, 데이터베이스를 MySQL로 가져온 다음, Flask 컨텍스트를 시작하고, 있는 그대로 데이터베이스에 대한 보고서를 실행할 수 있는 Python 스크립트를 작성하는 것이 가능하다는 것을 배웠습니다. 그런 다음 헹구고 반복하세요.

간단한 개념처럼 들릴 수도 있지만, 대부분 표준적인 접근 방식을 사용하여 이를 달성하려는 노력은 믿을 수 없을 정도로 어려웠습니다. 저는 백업을 가져오는 스크립트를 작성하는 것으로 시작한 다음 가져온 데이터에 대한 보고서를 실행하고 이를 루프에 넣었습니다. 그런데 안타깝게도 2nd 루프 반복에 매달린 터미널을 만나 무슨 일이 일어날지 분석하기 시작했습니다.

가장 먼저 떠오른 생각은 Flask 앱에서 가져오던 작업으로 인해 스크립트가 아직 종료되지 않았기 때문에 가져오기가 차단되어 Flask와의 데이터베이스 연결을 유지하는 잠금이 여전히 활성화되어 있다는 것이었습니다. , 그러나 이런 일이 발생했음을 알려주는 오류 메시지는 없었고 의도적으로 설계된 것이라고 가정하므로 Flask에 대한 경험을 바탕으로 이것이 그럴 가능성이 가장 높다고 합리화했습니다.

그래서 저는 Flask에서 가져온 모듈을 간단히 '가져오기 취소'하는 방법을 검색하다가 작업을 완료하기 위해 Python에서 del 키워드를 발견하고 다시 시도했습니다. 이전에 내가 앉았던 동일한 교수형 터미널. 그래서 다시 원점으로 돌아왔습니다.

다음으로 생각한 것은 모듈이 제거되었지만 Flask 앱 컨텍스트가 여전히 어딘가에서 실행되고 있다는 것입니다. Flask 앱 컨텍스트를 내가 원하는 곳에서 강제로 실행하고 중지하기 위해 약 2년 전 이전 작업에서 사용한 접근 방식을 시도했습니다. 여기서는 Flask 앱 컨텍스트를 사용하여 이메일을 비동기식으로 보내야 했습니다.

그런 다음 for 루프 내에서 앱을 가져온 다음 with app.app_context(): 명령을 사용하여 Flask가 지정된 컨텍스트 내에서만 시작되고 중지되도록 했습니다. 그런 다음 스크립트를 실행하고 첫 번째 루프에서 데이터베이스를 가져오는 데 몇 분 정도 기다리면서 숨을 죽이고 터미널을 관찰한 다음 이전과 마찬가지로 두 번째 루프부터 시작하여 성공했습니다! 두 번째 가져오기가 성공했고 보고서가 완료되었음을 나타내는 예상되는 다음 단계 출력을 얻었고 이를 출력 파일과 비교하여 확인했습니다.

이전에는 해본 적이 없는 결과여서 만족스러웠고, 결과를 파악하고 예상대로 작동하게 할 수 있어서 기뻤습니다.

처음에 왜 이걸 하려고 했는지 궁금하실 수도 있는데 좋은 질문이네요. 데이터베이스 백업 이외의 다른 곳에 저장되지 않았고 현재 라이브 데이터베이스에서 수집할 수 없는 데이터가 필요한 과거 월간 보고서를 가져오는 임무를 맡았기 때문에 이 데이터를 가져오는 데 사용할 백업만 있었습니다. . 이것이 제가 데이터베이스 가져오기와 함께 Flask 컨텍스트를 관리하는 방법을 배우게 된 이유입니다.

코드 읽기를 즐기는 분들을 위해 스크립트를 다음과 같이 구성했습니다.

import os # for running the database import command

backup_name_list = [
    "backup1",
    "backup2"
]

for backup_name in backup_name_list:
    # do all necessary changes or checks on the db name here
    command = f"mysql -u db_user_name --password='SomePassword' db_name < '/path/to/{backup_name}.sql'"
    os.command(command)

    # import the app variable to allow for the context to be created
    from app_module import app_variable

    with app_variable.app_context():
        # do all Flask related imports here
        from app_module import relevant_app_class_or_function

        # run all relevant code here to build up your data from the loaded backup

        # remove the imported modules
        del relevant_app_class_or_function

    # remove the app variable after the context expires just to be safe
    del app_variable

로그인 후 복사

그래서 데이터베이스 백업에서만 기록 데이터를 가져올 수 있었습니다.

이 내용은 매우 구체적이며, 이 내용은 튜토리얼이 아니며 순전히 개인적인 학습 경험을 위한 출구일 뿐이라는 점을 알고 있습니다. 이 내용이 흥미로운 읽기 또는 유용한 정보가 되기를 바라면서 여기에서 공유하고 싶습니다. 어딘가에 있는 누군가에게 유용한 팁을 제공합니다.

여기까지 읽어주셔서 감사하다는 말씀을 전하고 싶고, 다음 포스팅에도 많은 참여 부탁드립니다.

위 내용은 이번 주에 배운 것 #0의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

정규 표현이란 무엇입니까? 정규 표현이란 무엇입니까? Mar 20, 2025 pm 06:25 PM

정규 표현식은 프로그래밍의 패턴 일치 및 텍스트 조작을위한 강력한 도구이며 다양한 응용 프로그램에서 텍스트 처리의 효율성을 높입니다.

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

See all articles