프로그램 작성

궁극의 파이썬 초보자 가이드

2021년 10월 30일

목차

  • 환경 설정
    • 로컬 환경 설정
    • 파이썬을 얻는 방법
    • 파이썬을 설치하는 방법
    • 윈도우 설치
    • 유닉스/리눅스 설치
    • MAC 설치
    • Python용 경로 설정
    • Unix/Linux용 경로 설정
    • Windows용 경로 설정
  • 파이썬 환경 변수
    • 파이썬 실행
  • 기본 구문
    • 파이썬 식별자
    • 파이썬 문
    • 파이썬의 들여쓰기
    • 파이썬의 주석
    • 입력 받기
    • 출력 표시
  • 변수 유형
    • 변수에 값 할당
    • 파이썬 데이터 유형
    • 문자열
    • 튜플
    • 기울기
    • 번호
  • 기본 연산자
    • 할당 연산자
    • 비트 연산자
    • 논리 연산자
    • 산술 연산자
    • 비교 연산자
    • ID 연산자
    • 멤버십 운영자
  • 의사결정
    • If 문
    • 다른 경우라면
    • 중첩되는 경우
    • If-elif-else-ladder
    • if 문 약식
    • 약식 if-else 문
  • 루프
    • 루프 동안
    • For 루프
    • 중첩 루프
    • 루프 제어문
    • 계속 문
    • 중단 문
    • 통과 진술
  • 번호
    • 숫자 유형 변환
    • 난수 함수
    • 삼각 함수
    • 수학 함수
  • 문자열
    • 문자열 만들기
    • 문자열 특수 연산자
    • 문자열 형식화 연산자
    • 탈출 문자
    • 기본 제공 문자열 메서드
  • 튜플
    • 튜플의 값 액세스
    • 튜플 업데이트
    • 기본 튜플 연산자
    • 내장 튜플 함수
    • 인덱싱 및 슬라이싱
    • 튜플 삭제
  • 기울기
    • 목록의 값 액세스
    • 목록 업데이트
    • 기본 목록 연산자
    • 내장 목록 함수 및 메서드
    • 인덱싱 및 슬라이싱
    • 목록 요소 삭제
  • 사전
    • 사전 만들기
    • 사전에 요소 추가
    • 사전에서 요소 제거
    • 파이썬 사전 메서드
  • 날짜와 시간
    • 시간 튜플
    • 시간 모듈
    • 캘린더 모듈
  • 기능
    • 함수를 정의하는 방법
    • 함수 호출
    • 참조로 전달
    • 값으로 전달
    • 함수 인수
    • 가변 길이 인수
    • 필수 인수
    • 기본 인수
    • 키워드 인수
    • 익명 기능
  • 모듈
    • 수입 명세서
    • from import 문
    • from import * 문
    • 모듈 찾기
    • locals() 및 globals() 함수
    • 네임스페이스 및 범위 지정
    • dir( ) 함수
    • reload() 함수
  • 파일 I/O
    • 파일 열기
    • 파일 객체 속성
    • 파일 닫기
    • 문 포함
    • 쓰기 방법
    • 읽기 방법
    • 이름 바꾸기() 메서드
    • remove() 메서드
    • 파일 위치
  • 예외
    • 예외란 무엇입니까?
    • 예외 처리
    • 예외 발생
    • 표준 예외 목록
    • 사용자 정의 예외
    • Python의 어설션
  • 클래스 및 개체
    • 수업 만들기
    • 클래스 객체
    • 속성 액세스
    • 내장 클래스 속성
    • 쓰레기 수거
    • 클래스 상속
    • 재정의 메서드
    • 정규식
    • 매치 기능
    • 검색 기능
    • 정규식 수정자
    • 정규 표현식 패턴
    • 캐릭터 클래스
    • 반복 사례
    • 앵커
  • CGI 프로그래밍
  • MySQL 데이터베이스 액세스
  • 네트워크
    • 소켓이란 무엇입니까?
    • 소켓 모듈
    • 파이썬 인터넷 모듈
  • 이메일 보내기
    • Python을 사용하여 HTML 이메일 보내기
    • 이메일로 첨부 파일 보내기
  • 다중 스레드 프로그래밍
    • 새 스레드 시작
    • 스레딩 모듈
    • 스레드 동기화
    • 다중 스레드 우선 순위 대기열
  • XML 처리
    • XML이란 무엇입니까?
    • XML 파서 아키텍처 및 API
    • SAX API로 XML 구문 분석
      • make_parser 메서드
      • 구문 분석 방법
      • parseString 메서드
  • GUI 프로그래밍
    • Tkinter 위젯
  • 지오메트리 관리
  • 추천 기사

CGI 프로그래밍

CGI 또는 Common Gateway Interface는 사용자 정의 스크립트와 웹 서버 간에 정보가 교환되는 방식을 정의하는 일련의 표준입니다. NCSA는 현재 CGI 사양을 유지합니다.

웹 브라우징

CGI의 개념을 이해하고 싶다면 여기에 예가 있습니다. 특정 URL 또는 웹 페이지를 탐색하려면 하이퍼링크를 클릭합니다.

  • 브라우저는 웹 서버에 접속하고 URL을 요구합니다.
  • Web Server는 URL을 구문 분석하고 파일 이름을 찾습니다. 파일을 찾으면 브라우저로 다시 보내고, 그렇지 않으면 잘못된 파일을 요청했음을 나타내는 오류 메시지를 보냅니다.
  • 웹 브라우저는 웹 서버의 응답을 받아 수신된 파일이나 오류 메시지를 표시합니다.

특정 디렉토리의 파일이 요청될 때마다 해당 파일이 다시 전송되지 않도록 HTTP 서버를 설정할 수 있지만; 대신 프로그램으로 실행되고 해당 프로그램이 출력하는 모든 내용은 브라우저가 표시할 수 있도록 다시 전송됩니다.

이 기능을 Common Gateway Interface 또는 CGI라고 하며 계획을 CGI 스크립트라고 합니다. CGI 프로그램은 Python 스크립트, PERL 스크립트, 쉘 스크립트, C 또는 C++ 프로그램 등일 수 있습니다.

파이썬

HTTP 헤더

라인 컨텐츠 유형:text/html 콘텐츠를 이해하기 위해 브라우저로 전송되는 HTTP 헤더의 일부입니다. 모든 HTTP 헤더는 다음 형식입니다.

예 아니오 헤더 설명
하나위치: URL요청된 URL이 아닌 반환된 URL입니다. 필드를 사용하여 요청을 모든 파일로 리디렉션할 수 있습니다.
컨텐츠 타입:반환된 파일의 형식을 정의하는 MIME 문자열입니다. 예를 들어 Content-type:text/html입니다.
최종 수정 날짜: 날짜리소스 수정 날짜입니다.
4만료: 날짜해당 날짜에 정보가 무효가 됩니다. 브라우저는 이것을 사용하여 페이지를 새로 고쳐야 하는 시기를 결정합니다.
5쿠키 설정: 문자열를 통해 전달된 쿠키를 설정합니다.
6콘텐츠 길이: N데이터 길이가 반환됩니다. 브라우저는 이 값을 사용하여 파일의 예상 다운로드 시간을 보고합니다.

CGI 환경 변수

CGI 프로그램은 몇 가지 환경 변수에 액세스할 수 있습니다. 이러한 변수는 CGI 프로그램을 작성하는 동안 필수적인 역할을 합니다.

예 아니오 변수 이름 설명
하나 CONTENT_LENGTH 쿼리 정보의 길이입니다. POST 요청에만 사용할 수 있습니다.
컨텐츠 타입 콘텐츠의 데이터 유형입니다. 클라이언트가 서버에 콘텐츠를 보낼 때 사용됩니다. 예를 들어 파일 업로드.
QUERY_STRING URL 인코딩 정보는 GET 메소드 요청과 함께 전송됩니다.
4 경로_정보 CGI 스크립트의 경로입니다.
5 HTTP_COOKIE 값 쌍과 키의 형태로 설정된 쿠키를 반환합니다.
6 원격 호스트 요청하는 호스트의 완전한 이름입니다. 정보를 사용할 수 없는 경우 REMOTE_ADDR을 사용하여 IR 주소를 얻을 수 있습니다. 파일의 예상 다운로드 시간을 보고하는 값입니다.
7 SCRIPT_FILENAME CGI 스크립트의 전체 경로입니다.
8 REQUEST_METHOD 이 메서드는 요청을 만드는 데 사용됩니다. 가장 일반적인 방법은 POST와 GET입니다.
9 서버 이름 서버의 호스트 이름 또는 IP 주소
10 서버_소프트웨어 서버가 실행 중인 소프트웨어의 버전 및 이름.
열하나 HTTP_USER_AGENT user-agent request-header는 요청을 시작한 사용자 에이전트에 대한 정보를 포함합니다. 웹 브라우저의 이름입니다.
12 REMOTE_ADDR 원격 호스트의 IP 주소가 요청합니다. 로깅이나 인증에 유용합니다.
13 SCRIPT_NAME CGI 스크립트의 이름입니다.

GET 메서드

GET 방법은 브라우저에서 웹 서버로 정보를 전달하는 기본 방법이며 브라우저 위치에 나타나는 문자열을 생성합니다: 상자. 비밀번호나 기타 민감한 정보가 있는 경우 GET 방법을 사용하면 안 됩니다. GET 메서드에는 크기 제한이 있습니다. 요청 문자열에는 1024자만 보낼 수 있습니다. GET 메소드는 QUERY_STRING 헤더를 사용하여 정보를 전송하고 QUERY_STRING 환경 변수를 통해 CGI 프로그램에서 액세스할 수 있습니다.

통사론

|_+_| img 617dd274c490b

산출

img 617dd27560edf

POST 방식

POST는 World Wide Web에서 사용하는 HTTP에서 지원하는 요청 방법입니다. POST 메서드는 웹 서버가 요청 메시지의 본문에 포함된 데이터를 수락하도록 요청합니다. 파일을 업로드하거나 완성된 웹 양식을 제출할 때 사용합니다.

통사론

|_+_| img 617dd275b62df

CGI에서 쿠키 사용

HTTP 프로토콜은 상태 비저장입니다. 상업용 웹사이트의 경우 다양한 페이지 간에 세션 정보를 유지해야 합니다.

어떤 상황에서는 쿠키를 사용하는 것이 더 나은 방문자 경험 또는 사이트 통계를 위해 선호도, 수수료, 구매 및 기타 정보를 추적하고 기억하는 가장 효율적인 방법입니다.

어떻게 작동합니까?

서버는 쿠키의 형태로 브라우저에 일부 데이터를 보냅니다. 브라우저가 쿠키를 수락할 수 있습니다. 승인되면 하드 드라이브에 일반 텍스트 레코드로 저장됩니다. 이제 방문자가 다른 페이지에 도착하면 쿠키를 검색할 수 있습니다. 일단 검색되면 서버는 저장된 내용을 기억합니다.

MySQL 데이터베이스 액세스

MySQLdb는 Python에서 MySQL 데이터베이스 서버에 연결하기 위한 인터페이스입니다. 구현한다 파이썬 Database API v2.0이며 MySQL C API를 기반으로 구축되었습니다.

데이터베이스 테이블 생성

데이터베이스 연결이 이루어지면 생성된 커서의 실행 메소드를 사용하여 데이터베이스 테이블에 테이블 또는 레코드를 생성할 준비가 된 것입니다.

img 617dd27621265

삽입 작업

데이터베이스 테이블에 레코드를 생성하려면 삽입 작업이 필요합니다.

img 617dd2767f199

읽기 작업

모든 데이터베이스에서 READ 작업은 데이터베이스에서 일부 정보를 가져오는 것을 의미합니다.

데이터베이스 연결이 설정되면 이 데이터베이스에 대한 쿼리를 수행하도록 설정됩니다. 당신은 사용할 수 있습니다 페치원() 단일 레코드를 가져오는 방법 또는 가져오기() 데이터베이스 테이블에서 여러 값을 가져오는 방법입니다.

    가져오기()- 결과 집합의 행을 가져옵니다. 일부 행이 이미 결과 세트에서 추출된 경우 결과 세트에서 행을 검색합니다.페치원()− 쿼리 결과 집합의 다음 행을 가져옵니다. 결과 집합은 커서를 사용하여 테이블을 쿼리할 때 반환되는 개체입니다.행 수− 읽기 전용 속성이며 execute() 메서드의 영향을 받은 행 수를 반환합니다.

업데이트 작업

모든 데이터베이스에서 업데이트 작업은 데이터베이스에서 사용할 수 있는 레코드를 업데이트하는 것을 의미합니다.

DELETE 작업

DELETE 작업은 데이터베이스에서 일부 레코드를 삭제합니다.

트랜잭션 수행

트랜잭션은 데이터 일관성을 보장하는 메커니즘입니다.

    원자성− 트랜잭션이 완료되거나 아무 일도 일어나지 않습니다.일관성− 트랜잭션은 일관된 상태에서 시작되어야 하며 시스템은 일관된 상태로 유지되어야 합니다.격리− 거래의 결과는 현재 거래 외부에서 볼 수 없습니다.내구성− 트랜잭션이 커밋되면 시스템 장애가 발생한 후에도 영향이 일정합니다.

커밋 작업

커밋은 변경 사항을 완료하기 위해 데이터베이스에 녹색 신호를 보내는 작업이며 이 작업 후에는 변경 사항을 되돌릴 수 없습니다.

예를 들어 db.commit()

롤백 작업

하나 이상의 변경 사항을 원하지 않고 해당 변경 사항을 완전히 되돌리려면 롤백을 사용해야 합니다. () 방법.

예를 들어 db.rollback()

데이터베이스 연결 해제

데이터베이스 연결을 끊으려면 close() 메서드를 사용해야 합니다.

데이터베이스에 대한 연결이 닫히면 미해결 트랜잭션이 DB에 의해 롤백됩니다. 그러나 DB 하위 수준 구현 세부 정보에 따라 응용 프로그램은 명시적으로 커밋 또는 롤백을 호출하는 것이 더 좋습니다.

오류 처리

오류에는 여러 가지 이유가 있습니다. 연결 실패, 실행된 SQL 문의 구문 오류는 몇 가지 예입니다.

DB API는 각 데이터베이스 모듈에 존재할 수 있는 오류의 수를 정의합니다. 다음 표에는 예외가 나열되어 있습니다.

예 아니오 예외 설명
하나 오류오류의 기본 클래스입니다. Error를 서브클래싱해야 합니다.
인터페이스 오류데이터베이스 자체가 아니라 데이터베이스 모듈의 오류에 사용됩니다. 오류를 하위 클래스로 지정해야 합니다.
경고치명적이지 않은 문제에 사용됩니다. StandardError를 서브클래싱해야 합니다.
4 데이터 오류데이터의 오류를 참조하는 것은 DatabaseError의 하위 클래스입니다.
5 데이터베이스 오류데이터베이스의 오류에 사용됩니다. 하위 클래스 오류여야 합니다.
6 작동 오류DatabaseError의 하위 클래스는 데이터베이스 연결 끊김과 같은 오류를 나타냅니다. 오류는 Python 스크립터의 제어 범위를 벗어납니다.
7 내부 오류DatabaseError의 하위 클래스는 커서가 더 이상 활성화되지 않는 것처럼 데이터베이스 모듈 내부의 오류를 나타냅니다.
8 지원되지 않는 오류DatabaseError의 하위 클래스는 지원되지 않는 기능을 호출하려는 시도를 나타냅니다.
9 무결성 오류고유성 제약 조건 또는 외래 키와 같이 관계 무결성을 손상시키는 상황에 대한 DatabaseError의 하위 클래스입니다.
10 프로그래밍 오류DatabaseError의 하위 클래스는 잘못된 테이블 이름과 같은 오류를 나타냅니다.