반응형



IT일지 27

[파이썬] concurrent.futures 모듈로 병렬처리하기

웹 크롤링을 하는데 1페이지씩 하려니 오래걸려서 비동기로 처리하는 방법을 찾다가 발견한 방법입니다. 아래는 크롤링 부분은 빼고 concurrent.futures 사용방법에 대한 예시입니다. 코드확인 각 라인별로 간단히 정리해보면 line 5 ~ 9 / 병렬 실행할 do_work 함수를 정의 line 12 / do_work에 입력할 값을 리스트로 저장 line 15 ~ 17 / 병렬처리 실행 및 결과 저장 line 20 ~ 21 / 결과 출력 다른 부분은 기본적인 내용이라 넘어가고 ThreadPoolExecutor부분만 자세히 살펴보면 다음과 같은 구조로 되어있습니다. with concurrent.futures.ThreadPoolExecutor() as executor: results = executor...

IT일지/파이썬 2024.01.27

[파이썬 에러] sqlite3.OperationalError database is locked 해결하기

문제상황 sqlite3.OperationalError: database is locked 이전글과 동일한 방식으로 db에 값을 입력하려고 하는데 발생한 문제입니다. 코드에는 문제가 없 해결방법 위 상황에서는 DB Browser에서 값을 수정했다면 변경사항 저장하기 또는 취소하기를 눌러주거나 아예 데이터베이스 닫기를 하면 해결됩니다. 위 상황과 별개로 DB Browser를 사용하지 않을 경우에도 'database is locked'가 발생할 수 있는데, 트랜잭션으로 여러개의 insert 또는 update 작업을 처리하는 사이에 또다시 insert나 update 작업을 실행하게 되면 해당 에러가 발생하게 됩니다. 이 경우에는 트랜잭션을 빠르게 닫아주거나 try except 로 에러가 발생하면 기다렸다가 다시..

IT일지/파이썬 2024.01.26

[파이썬 에러] sqlite3.ProgrammingError Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied 해결하기

문제상황 sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied 이전 글과 같은 구조의 테이블에 INSERT하려고 하는데 발생한 다른 에러입니다. sql 쿼리에는 값을 받을 곳, 즉 물음표가 1개 뿐인데 입력값을 5개나 넣었다고 에러를 띄우고 있네요 왼쪽의 경우에는 'name2'라고 넣어서 n, a, m, e, 2 하나씩 들어가는 상황이고, 오른쪽은 괄호로 묶어서 튜플로 만들어줬는데도 왼쪽과 같은 결과가 발생한 상황입니다. 해결방법 1 문제 상황 오른쪽에서 튜플 안에 콤마(,) 를 마지막에 붙여주면 됩니다. 해결방법 2 params라는 리스트 변수..

IT일지/파이썬 2024.01.25

[파이썬 에러] sqlite3.OperationalError table info has 2 columns but 1 values were supplied 해결하기

문제상황 sqlite3.OperationalError: table info has 2 columns but 1 values were supplied 1 다음과 같은 info 테이블에 값을 추가하려고 할 때 발생한 에러입니다. CREATE TABLE IF NOT EXISTS info ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE) id와 name 칼럼 2개가 있는데 id칼럼은 AUTOINCREMENT로 해놨기 때문에 INSERT문에 VALUES를 1개만 넣었는데 문제가 발생했네요 해결방법 1 가장 단순한 방법으로는 모든 칼럼에 해당하는 값을 VALUES 에 넣어서 INSERT하면 됩니다. 해결방법 2 INSERT INTO 테이블명 (칼럼명) VALUE..

IT일지/파이썬 2024.01.24

[파이썬 에러] sqlite3.OperationalError near ) syntax error 해결하기

문제상황 sqlite3.OperationalError: near ")": syntax error sqlite3 모듈을 사용하여 테이블을 생성하려고 할 때 발생한 에러입니다. 오류 내용 자체는 ) 근처에서 문법 오류가 발생했다는 것이라서 매우 다양한 경우의 수가 있을 수 있는데, 일단 여기서 발생한 문제점에 대해서만 대처해보겠습니다. 해결방법 파이썬에서 리스트에 값 입력할 때 ls = [1, 2, 3,] 이런식으로 마지막값 뒤에 콤마(,) 를 넣어도 잘 동작해서 무의식적으로 sql 쿼리에도 마지막값 뒤에 콤마를 종종 넣는데, sql 쿼리에서는 괄호 앞에 콤마(,) 가 있으면 위의 에러가 발생하므로 괄호 앞에 있는 콤마를 없애주면 정상적으로 테이블이 생성됩니다.

IT일지/파이썬 2024.01.23

[파이썬 에러] RuntimeError super-class __init__() of type MyWidget was never called

문제상황 RuntimeError: super-class __init__() of type MyWidget was never called pyqt5에서 Qwidget을 상속받은 커스텀 위젯을 만들고 실행할 때 발생한 문제입니다. 해당 에러는 부모 클래스의 __init__()함수가 자식 클래스에서 호출되지 않을 때 발생합니다. 해결방법 자식클래스의 __init__ 함수 안에 super().__init__() 를 추가해주면 정상적으로 동작합니다.

IT일지/파이썬 2024.01.23

[파이썬 에러] ValueError invalid literal for int() with base 10 해결하기

문제상황 ValueError: invalid literal for int() with base 10: '+5.967' 문자열 '+5.967'을 담고 있는 num 변수를 int로 변환하려고 할 때 생긴 에러입니다. 문자열에 소수점이 없다면 정상적으로 int형으로 변환이 되었을 상황이지만 소수점이 있어서 ValueError가 발생했네요 해결방법 소수점이 있는 문자열을 숫자 형태로 바꿔주기 위해서는 3번째 줄 처럼 num에 float을 씌운 다음 다시 int로 감싸주면 '+5.967' 이 정수 5로 변환되는 것을 확인 할 수 있습니다. 2번째 줄 처럼 float만 하면 실수 값인 5.697을 얻을 수 있습니다. 만약 소수점 3번째 자리에서 반올림을 하여 소수점 2번째 까지만 표시하고 싶다면 round(실수값,..

IT일지/파이썬 2024.01.21

[파이썬 에러] conda.cli.main_run:execute(33) 해결하기

vs code에서 며칠 전 까지만 해도 정상적으로 동작하던 프로그램이 갑자기 conda.cli.main_run:execute(33)를 띄우면서 실행이 되지 않는 문제가 발생했습니다. pyqt5를 사용한 프로그램이었는데 가상환경이 제대로 실행이 안되서 그런지 모듈을 찾을 수 없다는 ModuleNotFoundError: No module named 'PyQt5.QAxContainer'에러도 같이 나오더군요 그래서 아나콘다에서 새로운 가상환경을 만들고 다시 실행해봐도 실패 아나콘다 자체를 다시 설치해도 실패 비주얼 스튜디오 코드를 다시 설치해도 실패.... 마지막으로 cmd 터미널을 띄워서 직접 파이썬 파일을 실행하는 방법으로 프로그램을 동작시키는 데에는 성공하였으나,다른 서버로부터 받아오는 한글이 깨지는 문..

IT일지/파이썬 2022.03.09

"설치하려고 하는 앱이 Microsoft에서 확인된 앱이 아닙니다" 해결하기

새로 구매한 노트북에 3D 그래픽 툴인 블렌더를 깔고 실행하려고 했더니 아래와 같은 경고창이 떴습니다. 경고 메시지를 다르게 말하면 사용자가 임의로 다운받은 프로그램을 설치하면 랜섬웨어나 해킹프로그램같은게 PC에 깔릴 수도 있으니 마이크로소프트 스토어를 통해서 설치한 프로그램 말고는 실행 못하게 막을꺼임 이겠네요. 그러면 마이크로소프트 스토어에 제가 원하는 프로그램이 올라와있는지 찾아봐야겠네요. 경고창에서 [Microsoft Store에서 앱 받기]를 눌러도 되고, 시작 메뉴에서 Microsoft Store를 실행해도 됩니다. 찾아보니 있긴 있네요. 버전은 2가지만 있어서 제일 앞에 있는 블렌더 아이콘을 눌러봤습니다. 과거의 버전이나 포터블 버전 등은 선택할 수 없어 보이네요. 마이크로소프트 스토어를 통..

IT일지/Win10 2021.09.02