mysql
-
프로그램 구현 목표문제점 보완하기 ③: 조회하는 시점의 날짜 데이터 획득하기문제점 보완하기 ④: 저장된 날짜를 기준으로 차트 데이터를 조회하고 새 날짜 저장하기대신증권 CYBOS PLUS 프로그램 구현 (18) - 전종목 차트 데이터 저장하기 ①대신증권 CYBOS PLUS 프로그램 구현 (19) - 전종목 차트 데이터 저장하기 ②지난 게시글에서 이미 저장되어 있는 차트 데이터 조회 일자를 불러오는 기능까지는 구현했으니 이번 게시글에서는 `time` 라이브러리를 활용하여 차트 데이터를 조회하는 시점의 날짜 데이터를 획득하고, 차트 데이터 조회를 완료한 경우 그 날짜 데이터를 테이블에 저장하는 기능을 구현해볼 예정이다. 아마도 이번 게시글에서 전종목 차트 데이터 저장 기능은 모두 구현할 수 있을 것이다. 문..
대신증권 CYBOS PLUS 프로그램 구현 (20) - 전종목 차트 데이터 저장하기 ③프로그램 구현 목표문제점 보완하기 ③: 조회하는 시점의 날짜 데이터 획득하기문제점 보완하기 ④: 저장된 날짜를 기준으로 차트 데이터를 조회하고 새 날짜 저장하기대신증권 CYBOS PLUS 프로그램 구현 (18) - 전종목 차트 데이터 저장하기 ①대신증권 CYBOS PLUS 프로그램 구현 (19) - 전종목 차트 데이터 저장하기 ②지난 게시글에서 이미 저장되어 있는 차트 데이터 조회 일자를 불러오는 기능까지는 구현했으니 이번 게시글에서는 `time` 라이브러리를 활용하여 차트 데이터를 조회하는 시점의 날짜 데이터를 획득하고, 차트 데이터 조회를 완료한 경우 그 날짜 데이터를 테이블에 저장하는 기능을 구현해볼 예정이다. 아마도 이번 게시글에서 전종목 차트 데이터 저장 기능은 모두 구현할 수 있을 것이다. 문..
2024.09.23 -
프로그램 구현 목표문제점 확인하기: 이어받기가 안 되네 ?문제점 보완하기 ①: 차트 데이터를 조회한 시점을 저장할 테이블을 생성해보자.문제점 보완하기 ②: 차트 데이터 조회 일자가 저장된 테이블을 불러와보자. 문제점 확인하기: 이어받기가 안 되네 ?기존까지 제작한 프로그램을 다시 실행시켜서 전종목 차트 데이터 조회 버튼을 누르면 차트 데이터를 조회하는 것은 정상적으로 동작하지만 정작 데이터를 조회하는 꼴을 보면 이미 저장되어 있는 종목에 대한 차트 데이터도 조회한다는 것을 확인할 수 있다. 이와 더불어 기존에 `class manage_db`(con_mysql.py 파일) 클래스 내부에서 오류가 발생했을 때(`except`)에 "오류가 발생했습니다. 데이터를 저장하지 않습니다."라는 문구와 함께 오류 메시..
대신증권 CYBOS PLUS 프로그램 구현 (19) - 전종목 차트 데이터 저장하기 ②프로그램 구현 목표문제점 확인하기: 이어받기가 안 되네 ?문제점 보완하기 ①: 차트 데이터를 조회한 시점을 저장할 테이블을 생성해보자.문제점 보완하기 ②: 차트 데이터 조회 일자가 저장된 테이블을 불러와보자. 문제점 확인하기: 이어받기가 안 되네 ?기존까지 제작한 프로그램을 다시 실행시켜서 전종목 차트 데이터 조회 버튼을 누르면 차트 데이터를 조회하는 것은 정상적으로 동작하지만 정작 데이터를 조회하는 꼴을 보면 이미 저장되어 있는 종목에 대한 차트 데이터도 조회한다는 것을 확인할 수 있다. 이와 더불어 기존에 `class manage_db`(con_mysql.py 파일) 클래스 내부에서 오류가 발생했을 때(`except`)에 "오류가 발생했습니다. 데이터를 저장하지 않습니다."라는 문구와 함께 오류 메시..
2024.09.21 -
프로그램 구현 목표전체 종목 차트 데이터 저장하는 버튼과 함수 만들고 연결하기전체 종목 조회한 후 반복문으로 분봉 차트 데이터 조회하기일봉 및 주봉 차트 데이터도 조회하기 전체 종목 차트 데이터 저장하는 버튼과 함수 만들고 연결하기이제 GUI 파일을 열어서 버튼 하나 생성하는 것은 어렵지 않을 것이다. 아래와 같이 버튼을 하나 생성해주도록 하자.이제 전체 종목 차트 데이터를 저장할 함수를 생성하고, 초기화 함수에서 버튼 객체와 함수를 연결해주도록 하자.※ Line: 33 ~ 36## Boss.py ##import win32com.clientfrom pywinauto import applicationimport con_mysqlfrom COM import CpSysDibfrom COM import CpUt..
대신증권 CYBOS PLUS 프로그램 구현 (18) - 전종목 차트 데이터 저장하기 ①프로그램 구현 목표전체 종목 차트 데이터 저장하는 버튼과 함수 만들고 연결하기전체 종목 조회한 후 반복문으로 분봉 차트 데이터 조회하기일봉 및 주봉 차트 데이터도 조회하기 전체 종목 차트 데이터 저장하는 버튼과 함수 만들고 연결하기이제 GUI 파일을 열어서 버튼 하나 생성하는 것은 어렵지 않을 것이다. 아래와 같이 버튼을 하나 생성해주도록 하자.이제 전체 종목 차트 데이터를 저장할 함수를 생성하고, 초기화 함수에서 버튼 객체와 함수를 연결해주도록 하자.※ Line: 33 ~ 36## Boss.py ##import win32com.clientfrom pywinauto import applicationimport con_mysqlfrom COM import CpSysDibfrom COM import CpUt..
2024.09.18 -
프로그램 구현 목표필요한 데이터베이스 목록 정하기데이터베이스 존재여부 확인하기자동화라고 해서 뭐 거창한 기능이 있을 것 같지만, 그런 부분은 아니고 단순하게 프로그램이 실행되었을 때 우리가 필요로 하는 데이터베이스가 잘 있는지 확인하고 만약에 필요한 데이터베이스가 없다면 생성해주는 작업을 자동적으로 수행하도록 하는 것이다. 필요한 데이터베이스 목록 정하기기본적으로 사람마다 어떠한 데이터베이스를 사용할지는 모르지만, 적어도 분봉 · 일봉 정도로만 구분해놓고 사용할 것이다. 다만 분봉의 경우에는 3분봉이면 3분봉, 5분봉이면 5분봉과 같이 각 분봉별로 데이터베이스를 생성해두어야 차트 데이터를 종류별로 저장하고 사용할 때에도 간편하게 불러와서 사용할 수 있다. 일단 본인의 경우에는 분봉은 5분봉과 15분봉, ..
대신증권 CYBOS PLUS 프로그램 구현 (17) - 데이터베이스 관리 자동화프로그램 구현 목표필요한 데이터베이스 목록 정하기데이터베이스 존재여부 확인하기자동화라고 해서 뭐 거창한 기능이 있을 것 같지만, 그런 부분은 아니고 단순하게 프로그램이 실행되었을 때 우리가 필요로 하는 데이터베이스가 잘 있는지 확인하고 만약에 필요한 데이터베이스가 없다면 생성해주는 작업을 자동적으로 수행하도록 하는 것이다. 필요한 데이터베이스 목록 정하기기본적으로 사람마다 어떠한 데이터베이스를 사용할지는 모르지만, 적어도 분봉 · 일봉 정도로만 구분해놓고 사용할 것이다. 다만 분봉의 경우에는 3분봉이면 3분봉, 5분봉이면 5분봉과 같이 각 분봉별로 데이터베이스를 생성해두어야 차트 데이터를 종류별로 저장하고 사용할 때에도 간편하게 불러와서 사용할 수 있다. 일단 본인의 경우에는 분봉은 5분봉과 15분봉, ..
2024.09.18 -
프로그램 구현 목표차트 데이터 조회하고 종목코드로 MySQL에 저장하기GUI에서 저장 여부 결정하는 기능 추가하기그럼 매번 체크해야 차트 데이터를 저장할 수 있어요 ?조회 구분에 따라 각기 다른 데이터베이스에 저장하기 차트 데이터 조회하고 종목코드로 MySQL에 저장하기차트 데이터 조회는 이전에 만들어두었던 CpSysDib.py 파일의 `class StockChart` 클래스의 `def chart_DWM()` 함수를 사용하면 된다. 이제 이 함수를 아래의 두 가지 기능을 수정할 것이다.※ Line: 10, 68함수의 인자로 차트 데이터 저장 여부(`save_gubun`)) 전달받아서 MySQL에 저장할지 말지 결정하기`return` 활용하여 조회한 차트 데이터 반환하기## CpSysDib.py ##imp..
대신증권 CYBOS PLUS 프로그램 구현 (16) - 차트 데이터 저장하기 ③프로그램 구현 목표차트 데이터 조회하고 종목코드로 MySQL에 저장하기GUI에서 저장 여부 결정하는 기능 추가하기그럼 매번 체크해야 차트 데이터를 저장할 수 있어요 ?조회 구분에 따라 각기 다른 데이터베이스에 저장하기 차트 데이터 조회하고 종목코드로 MySQL에 저장하기차트 데이터 조회는 이전에 만들어두었던 CpSysDib.py 파일의 `class StockChart` 클래스의 `def chart_DWM()` 함수를 사용하면 된다. 이제 이 함수를 아래의 두 가지 기능을 수정할 것이다.※ Line: 10, 68함수의 인자로 차트 데이터 저장 여부(`save_gubun`)) 전달받아서 MySQL에 저장할지 말지 결정하기`return` 활용하여 조회한 차트 데이터 반환하기## CpSysDib.py ##imp..
2024.09.18 -
프로그램 구현 목표파이참에서 MySQL에 데이터베이스 생성하기파이썬의 Magic Methods 활용하기차트 데이터를 저장할 클래스 생성하기지난 게시글에서는 ①데이터베이스의 존재 여부를 확인하는 기능과 ②데이터베이스와 연결하는 기능을 구현하였다. 이번 게시글에서부터는 데이터베이스를 생성하는 기능을 구현하고, 프로그램 시작과 동시에 해당 데이터베이스의 존재 여부를 판단하고 존재하지 않으면 데이터베이스를 생성하도록 하는 기능을 구현할 예정이다. 파이참에서 MySQL에 데이터베이스 생성하기데이터베이스를 생성할 함수를 con_mysql.py 파일의 `class check_db` 클래스 내부에 `def _make_db(self, db_name):`이라는 이름으로 하여 생성해주도록 하자. 이제 이 함수의 인자로 전달..
대신증권 CYBOS PLUS 프로그램 구현 (15) - 차트 데이터 저장하기 ②프로그램 구현 목표파이참에서 MySQL에 데이터베이스 생성하기파이썬의 Magic Methods 활용하기차트 데이터를 저장할 클래스 생성하기지난 게시글에서는 ①데이터베이스의 존재 여부를 확인하는 기능과 ②데이터베이스와 연결하는 기능을 구현하였다. 이번 게시글에서부터는 데이터베이스를 생성하는 기능을 구현하고, 프로그램 시작과 동시에 해당 데이터베이스의 존재 여부를 판단하고 존재하지 않으면 데이터베이스를 생성하도록 하는 기능을 구현할 예정이다. 파이참에서 MySQL에 데이터베이스 생성하기데이터베이스를 생성할 함수를 con_mysql.py 파일의 `class check_db` 클래스 내부에 `def _make_db(self, db_name):`이라는 이름으로 하여 생성해주도록 하자. 이제 이 함수의 인자로 전달..
2024.09.18 -
프로그램 구현 목표MySQL 설치 및 구조 이해하기MySQL과 파이썬 연결하기 : sqlalchemy데이터베이스 존재 여부 확인하기이번 게시글에서는 이전에 제작한 차트 데이터 저장 함수를 활용하여 획득한 차트 데이터를 MySQL이라는 데이터베이스 프로그램을 설치한 후, MySQL의 구조를 이해하고 우리가 조회한 차트 데이터를 저장하고 또 다시 불러오는 방법에 대해 살펴보고자 한다. MySQL 설치 및 구조 이해하기이 프로그램을 설치하는 방법은 워낙에 다양한 게시글에서 설명하고 있으니 이 게시글에서는 설치 방법에 대한 설명은 제외하고, 참고하면 좋은 게시글의 링크를 첨부하여 둘테니 그 게시글의 설치 방법을 참고하도록 하자.※ 설치할 때 입력한 비밀번호는 기억해두도록 하자. 아래에서 사용할 때 필요하다. ..
대신증권 CYBOS PLUS 프로그램 구현 (14) - 차트 데이터 저장하기 ①프로그램 구현 목표MySQL 설치 및 구조 이해하기MySQL과 파이썬 연결하기 : sqlalchemy데이터베이스 존재 여부 확인하기이번 게시글에서는 이전에 제작한 차트 데이터 저장 함수를 활용하여 획득한 차트 데이터를 MySQL이라는 데이터베이스 프로그램을 설치한 후, MySQL의 구조를 이해하고 우리가 조회한 차트 데이터를 저장하고 또 다시 불러오는 방법에 대해 살펴보고자 한다. MySQL 설치 및 구조 이해하기이 프로그램을 설치하는 방법은 워낙에 다양한 게시글에서 설명하고 있으니 이 게시글에서는 설치 방법에 대한 설명은 제외하고, 참고하면 좋은 게시글의 링크를 첨부하여 둘테니 그 게시글의 설치 방법을 참고하도록 하자.※ 설치할 때 입력한 비밀번호는 기억해두도록 하자. 아래에서 사용할 때 필요하다. ..
2024.09.16 -
[ERROR CODE] sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1193, "Unknown system variable 'transaction_isolation'") 노트북을 새롭게 구매한 후에 세팅하던 중 계속 오류가 발생해서 검색해보니, MySQL 8.0 내 변수로 tx_isolation만 존재하는 오류가 발생했다. 원칙 상, MySQL 5.7.20 버전 이후의 버전부터는 tx_isolation을 사용하지 않고 transaction_isolation을 사용하기 때문에, MySQL 8.0을 사용한다면 tx_isolation은 없고 transaction_isolation만 존재해야 한다. MySQL 설치 시에 함꼐 설치되는 MyS..
mysql 8.0 내에서 tx_isolation만 있는 경우[ERROR CODE] sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1193, "Unknown system variable 'transaction_isolation'") 노트북을 새롭게 구매한 후에 세팅하던 중 계속 오류가 발생해서 검색해보니, MySQL 8.0 내 변수로 tx_isolation만 존재하는 오류가 발생했다. 원칙 상, MySQL 5.7.20 버전 이후의 버전부터는 tx_isolation을 사용하지 않고 transaction_isolation을 사용하기 때문에, MySQL 8.0을 사용한다면 tx_isolation은 없고 transaction_isolation만 존재해야 한다. MySQL 설치 시에 함꼐 설치되는 MyS..
2022.05.02 -
이번에는 지난 포스팅에서 파이썬 내에서 MySQL과 연결하는 코드를 살펴봤으니, 이제는 데이터베이스를 자동적으로 구축하는 코드에 대해 제작하고자 한다. 현재 키움증권 Open API와 관련된 코드가 포함되어 있는 파일의 파일명은 posting이고 MySQL과 연동하고 DB를 구축하는 코드는 posting_mysql 파일에 제작되어 있다. 이를 유의하고 보도록 하자. 데이터베이스 자동 생성 절차 구축하기 지난 포스팅에서 대략적으로 다루긴 했었으나 이번 포스팅에서는 함수를 제작함으로써, 그 함수 내에 제작하고자 하는 데이터베이스 이름만 입력하면 자동으로 데이터베이스가 존재하는지 확인하고 없다면 생성하도록 하는 절차를 구축하고자 한다. 이 코드를 제작하는 파일 이름은 posting_mysql이고, OpenAP..
파이썬 + MySQL, 데이터베이스 자동 처리하기이번에는 지난 포스팅에서 파이썬 내에서 MySQL과 연결하는 코드를 살펴봤으니, 이제는 데이터베이스를 자동적으로 구축하는 코드에 대해 제작하고자 한다. 현재 키움증권 Open API와 관련된 코드가 포함되어 있는 파일의 파일명은 posting이고 MySQL과 연동하고 DB를 구축하는 코드는 posting_mysql 파일에 제작되어 있다. 이를 유의하고 보도록 하자. 데이터베이스 자동 생성 절차 구축하기 지난 포스팅에서 대략적으로 다루긴 했었으나 이번 포스팅에서는 함수를 제작함으로써, 그 함수 내에 제작하고자 하는 데이터베이스 이름만 입력하면 자동으로 데이터베이스가 존재하는지 확인하고 없다면 생성하도록 하는 절차를 구축하고자 한다. 이 코드를 제작하는 파일 이름은 posting_mysql이고, OpenAP..
2021.06.06 -
지난 포스팅을 통해 설치와 설정하는 방법에 대해 다루었으므로 이번 포스팅에서는 파이썬 내에서 MySQL과 연결하는 방법과 사용방법에 대해 살펴볼 예정이다. 일단 이 MySQL은 앞전에서 다루었던 차트 데이터 조회에 대한 부분이 반드시 선행되어야만 아래의 내용들을 사용할 수 있기 때문에 아직 차트 데이터에 대한 코드 구축이 안 되어 있다면 그 글을 먼저 보고 넘어오도록 하자. 물론 차트 데이터 저장이 아닌 다른 목적으로 이용하고자 하는 경우라면 바로 읽어도 아무런 상관이 없다. 키움증권 Open API 차트 데이터 불러오기 (1) OnReceiveTrData 이벤트 처리하기 지난 포스팅에서 Open API를 열고 로그인을 하는 코드까지 모두 구축하고 넘어왔다. 이번 포스팅에서는 로그인 이후에 조회하고자 하..
파이썬 + MySQL, 파이썬으로 연동하기지난 포스팅을 통해 설치와 설정하는 방법에 대해 다루었으므로 이번 포스팅에서는 파이썬 내에서 MySQL과 연결하는 방법과 사용방법에 대해 살펴볼 예정이다. 일단 이 MySQL은 앞전에서 다루었던 차트 데이터 조회에 대한 부분이 반드시 선행되어야만 아래의 내용들을 사용할 수 있기 때문에 아직 차트 데이터에 대한 코드 구축이 안 되어 있다면 그 글을 먼저 보고 넘어오도록 하자. 물론 차트 데이터 저장이 아닌 다른 목적으로 이용하고자 하는 경우라면 바로 읽어도 아무런 상관이 없다. 키움증권 Open API 차트 데이터 불러오기 (1) OnReceiveTrData 이벤트 처리하기 지난 포스팅에서 Open API를 열고 로그인을 하는 코드까지 모두 구축하고 넘어왔다. 이번 포스팅에서는 로그인 이후에 조회하고자 하..
2021.06.03 -
오류 코드 명 mysql.connector.errors.InternalError: Unread result found 해결 방법 # 기존 코드 connection = mysql.connector.connect(user="", password="", host="") cur = connection.cursor() # 변경 코드 connection = mysql.connector.connect(user="", password="", host="") cur = connection.cursor(buffered=True) 즉, cursor() 안에 buffered=True만 넣어주면 이 오류는 해결된다. 부연 설명 본인의 경우 이 오류는 데이터를 입력하고자 할 때, 즉 cur.execute("INSERT ~~")와..
MySQL 오류 : InternalError: Unread result found오류 코드 명 mysql.connector.errors.InternalError: Unread result found 해결 방법 # 기존 코드 connection = mysql.connector.connect(user="", password="", host="") cur = connection.cursor() # 변경 코드 connection = mysql.connector.connect(user="", password="", host="") cur = connection.cursor(buffered=True) 즉, cursor() 안에 buffered=True만 넣어주면 이 오류는 해결된다. 부연 설명 본인의 경우 이 오류는 데이터를 입력하고자 할 때, 즉 cur.execute("INSERT ~~")와..
2021.04.04 -
[오류 코드 명] Truncated incorrect DOUBLE value: "~~~~~" Unknown '~~~~~~~' column in 'where clause' 위의 두 오류는 해석한 의미대로 해결하면 절대 해결되지 않는 문제점이다. 며칠 간 괴롭히던 문제점 중 하나인데, 정말 손쉽고 정말 당연하게 해결했다. 바로 python 내 코드에서의 입력값과 데이터베이스 내 칼럼의 자료형이 일치하지 않는 경우이다. 예를 들어 DB의 칼럼 자료형을 VARCHAR로 설정했다면 python 내 코드에서는 입력할 데이터의 양 옆에 ' ' 표시를 통해 문자열임을 나타내야 한다. 그렇지 않고 'code'=000020의 형태로 넣게 된다면 위의 오류가 발생하고, 'code'='000020'의 형태로 INSERT IN..
MySQL 오류 : MySQL Database Error: Truncated incorrect DOUBLE value / Unknown column in 'where clause'[오류 코드 명] Truncated incorrect DOUBLE value: "~~~~~" Unknown '~~~~~~~' column in 'where clause' 위의 두 오류는 해석한 의미대로 해결하면 절대 해결되지 않는 문제점이다. 며칠 간 괴롭히던 문제점 중 하나인데, 정말 손쉽고 정말 당연하게 해결했다. 바로 python 내 코드에서의 입력값과 데이터베이스 내 칼럼의 자료형이 일치하지 않는 경우이다. 예를 들어 DB의 칼럼 자료형을 VARCHAR로 설정했다면 python 내 코드에서는 입력할 데이터의 양 옆에 ' ' 표시를 통해 문자열임을 나타내야 한다. 그렇지 않고 'code'=000020의 형태로 넣게 된다면 위의 오류가 발생하고, 'code'='000020'의 형태로 INSERT IN..
2021.02.07