스크립팅 I로 일상의 지루한 작업 자동화

프로그래머의 평균 하루는 종종 대량 작업과 같은 지루한 작업으로 채워집니다. 오늘 저는 REPL의 도움으로 이러한 종류의 작업을 쉽게 자동화하는 방법에 대한 팁/요령을 공유합니다.

유스케이스 1: 긴 레코드 ID 목록이 있고 데이터베이스 테이블에서만 표시/업데이트하고 싶습니다.




with open('id_list.txt') as f:
    id_list = f.read().split('\n')
    print(f"select * from my_table where id in {tuple(id_list)}")

tuple 데이터 유형은 Python에서 괄호 사이에 쉼표로 구분된 값으로 표시되며 여기에서 where in 쿼리가 필요합니다.

사용 사례 2: PostgreSQL에서 한 테이블을 다른 테이블로 마이그레이션해야 합니다.



이 경우 이전 데이터베이스 테이블을 새 테이블로 마이그레이션해야 합니다. 열 이름이 다를 수 있고 일부 열이 제거되거나 다시 매핑될 수 있으며 새 테이블에는 다른 열/테이블에서 집계된 데이터를 포함하는 새 열이 있을 수 있습니다.

새 테이블을 매핑하는 이전 테이블을 사용하여 보기/구체화된 보기를 만들었습니다. 구체화된 뷰의 출력에서 ​​삽입 쿼리를 반환하는 작은 SQL 스크립트를 다음과 같이 작성합니다.

select format('insert into table_v2 (field_a, field_b, field_c, ...) values (%L, %L, %L,...);', field_a, field_b, field_c,..)
from table_v2_mw


%L format string은 여기에서 인용 및 null 값을 처리합니다.

이 방법은 한 번에 복잡한 변경 사항을 적용하고 보고하는 데 매우 유용합니다. 내보낸 삽입/업데이트 쿼리 목록을 Jira에 첨부할 수 있습니다.

사용 사례 3: 스프레드시트가 싫습니다.



데이터로 작업하는 경우 Excel/CSV 파일은 업계 표준입니다. 때로는 그것들을 조작해야 하고 스프레드시트 소프트웨어는 간단한 작업에서도 일반적으로 형편없습니다. 부풀려진 중첩 IF 및 무의미한 함수와 싸우는 대신 CSV 형식으로 변환하고 Python에서 조작하는 것을 선호합니다. 또한 Python은 Pandas의 도움으로 정말 큰 CSV 파일을 처리할 수 있습니다.

with open("some_file_revised.csv", "w+") as csv_out:
    with open("some_file.csv") as csv_in:
        csv_reader = csv.DictReader(csv_in)
        csv_writer = csv.DictWriter(csv_out, fieldnames=csv_reader.fieldnames)
        csv_writer.writeheader()
        for row in csv_reader:
            # Manipulate data here
            row["foo"] = row["foo"][4:]
            csv_writer.write(row)

좋은 웹페이지 즐겨찾기