본문 바로가기
무모한 도전-주식 인공지능 만들기

SQLite3로 데이터 베이스를 다루는 연습-1-

by 인터넷떠돌이 2018. 11. 21.
반응형

안녕하세요?


이래저래 [파이썬으로 배우는 알고리즘 트레이딩]이라는 책을 보면서 실습을 하고 있는 중인데, 이래저래 진도가 나아기지 않고, 좌우충돌할 것이 많아서 포스팅이 많이 늦어지기는 했습니다. 그래도 그런데로 성과가 하나는 나오기는 나왔기에, 관련된 내용을 포스팅으로 올리고자 했으나, 분량이 너무 길어서 몇 부분으로 나누어야 했습니다.



먼저 가상환경인 PyQtTest에 Qtconsole을 인스톨하기 위해서 conda install qtconsole이라고 아나콘다 프롬프트에서 입력을 해 주도록 합니다.



잠시 시간이 걸리기는 걸렸습니다.



일단 아나콘다 프롬프트 상에서 설치가 완료 되었으면, 다음으로는 PyCharm에서 위 스크린샷처럼 Tools항목 아래에 있는 Python console을 실행시키도록 해 봅니다.



일단 PyCharm에서 콘솔을 실행시킨 상황입니다. 마치 Jupyter QtConsole처럼 in [2]:가 찍혀있는 것을 볼 수 있었습니다. 이제 부터 여기서 다 입력을 해 나가도록 해 봅니다.



먼저 위 스크린샷처럼 sqlite3 모듈을 import해 오도록 하며, sqlite.version이라고 입력을 해서 SQLite라고 하는 데이터 베이스를 관리하는 프로그램(DBMS)의 경량 버젼을 사용하기 위한, 파이썬의 모듈인 sqlite3의 버젼을 알아보는 명령어를 입력했습니다.



그리고 이어서 sqlite3.sqlite_version이라고 입력을 해서, 진짜 DBMS인 SQLite의 버젼을 알아보는 명령어를 입력하도록 해 보았습니다.




그리고 나서 처음에는 데이터베이스의 파일을 생성하기 위해서 로컬계정의 폴더 안에 testDatabse라는 폴더를 만들어 놓고, 여기서 kospi라는 데이터베이스의 파일을 만들어 놓으라고 명령을 내렸는데 무언가 에러가 나오는 것을 확인할 수 있었습니다.



지정된 경로에 폴더가 없어서 생기는 에러인가 했더니, 만들어도 계속 에러가 생겨서, 결국 권한의 문제라는 결론을 내렸습니다. 그래서 이번에는 C디스크 드라이브의 다른 폴더에서 데이터 베이스 파일을 만들어 주도록 합니다.



여기까지 하고나서 윈도우즈 탐색기로 한번 보았을 때, 제대로 kospi.db라는 파일이 생성이 되는 것을 확인활 수 있었습니다. 이제 다음의 단계로 넘어가도록 합니다.



먼저 con=sqlite3.connect("데이터 베이스 파일이 있는 경로")를 입력하고 났으니, 이제 데이터 베이스 파일에 테이블을 만들어줄 차례입니다. 그전에 이러한 작업을 하기 위해서는 듣자니 SQL구문을 사용해야 하는데, 파이썬에서 그냥 사용할 수는 없으니, cursor()라는 메소드를 사용해야 합니다.


cursor=con.cursor()


이런 구문을 입력해서 cursor()을 일일히 입력하지 않고서, 하나의 변수로 만들어 주어서 앞으로의 코딩이 편하게 되도록 만들어 주도록 합니다.


그렇게 해서 테이블의 생성은 아래의 구문을 따라가게 됩니다.


cursor.execute("CREATE TABLE 테이블의 이름(각각의 테이블을 구성하는 column의 이름(항목명))")


그리고 위 구문을 자세히 보면, CREATE TABLE 테이블의 이름 이라는 SQL의 구문이 사용되었음을 알 수 있습니다.



이어서 이제는 데이터를 테이블에 입력하기 위해서 우선 다음의 SLQ구문을 고려해야 합니다.


INSERT INTO 테이블의 이름 VALUES(값들)


그래서 입력하는 파이썬의 구문은 다음과 같이 됩니다. 


cursor.execute("INSERT INTO 테이블의 이름 VALUES('날짜', 시가, 저가, 고가, 종가, 거래량)


여기서 조심해야 하는 것은 단 하나인데, 원래 SQL구문에서는 문자열을 구분하기 위해서는 ""를 사용하는데, 파이썬의 cursor()메소드안에서는 작은 따옴표 ''를 사용해서 문자열을 구분한다는 것에 조심해야 합니다. 모르고 ""를 쓰면 에러가 발생합니다.



이제 데이터를 입력하는 데 성공했으니, 데이터 베이스 파일에 제대로 들어갔는지를 확인해야 하는데, 그냥은 확인할 수 없으니, DB Browser for SQLite라는 프로그램을 가지고 오도록 해 봅니다.



일단 DB Browser for SQLite의 설치가 끝나고 나서, 첫 실행을 한 모습입니다.



방금 만들어 낸 kospi.db라는 파일을 열어 보도록 합니다. 그러면, 제가 임의로 만들어 준 테이블과 테이블의 column명인 항목명이 있는 것을 볼 수 있습니다.



그런데 어떻게 된 것인지는 모르겠습니다만, 제가 만들어 놓은 테이블에 제대로 데이터가 들어가 있지 않은 것을 볼 수 있었습니다.



일단은 그래도 데이터가 제대로 들어 갔는지 확인하기 위해서 cursor.fetchone() 이라고 해서, 테이블에 들어가 있는 데이터를 한 줄씩 볼 수 있는 명령어를 써도 안 나오고, cursor.fetchall() 이라고 해서 모든 데이터를 한꺼번에 보여줄 수 있는 명령어를 입력해도 데이터가 안 나오는 것을 볼 수 있습니다.



혹시나 싶어서 일단 위에서 보이는 버튼을 눌러서 PyCharm의 콘솔을 정지 시키도록 합니다.



그래서 일단 다시 콘솔을 시작한 다음, SQL의 SELECT * From 테이블 이름 구문을 입력해서 해당 테이블의 데이터를 선택하는 명령어를 입력하는데, * 는 모든 데이터라는 의미가 있습니다. 이 명령을 써도, 여전히 데이터가 입력이 되지 않는 것을 볼 수 있었습니다. 그래서 아무래도 PyCharm에서 입력을 해서 이렇다는 생각이 들었습니다. 그래서 다음에는 한번 jupyter qtconsole이라는 것에서 실행을 시켜 보도록 해 보겠습니다.

반응형