안녕하세요?


이번 포스팅에서는 SQL구문을 가지고서 하루이상 제 작업 진도를 발목잡았고, 상당히 해결책을 몰라서 골치가 아팠던 부분을 포스팅 하고자 합니다. 뭐라고 해야 할까요? 파이썬에서 어떻게 하면 SQL구문을 사용할 지에 대한 이야기를 한다고 보시면 될듯 합니다.



먼저 Selection_of_training_data_set()이라고 해서, 입력받은 숫자를 가지고서 어떻게 하면 데이터 베이스의 파일에서 원하는 데이터만 과거부터 가지고 올 수 있는지에 대한 메소드를 만들려고 합니다. 일단 먼저 위 스크린샷과 같이 문제가 되는 부분은 바로 cur.execute()안에 들어간 sql구문입니다.



일단 어디가 문제인지 몰라서 에러가 나오는 것을 볼 수 있었습니다.



계속해서 시도를 하여도 에러가 뜨자, 아무래도 제 생각에는 pandas를 import해서 시도를 해 보고자 합니다.



그래서 위 스크린샷에 보이는 것과 같이 read_sql()이라는 메소드를 사용했지만......




어디가 잘못된 것인지 모르게 에러가 나오는 것을 볼 수 있었습니다.



그래서 위 스크린샷과 같이 이전에 원하는 테이블이 데이터 베이스 파일에 있는지를 알아보는 구문을 사용해 보았습니다만..



이건 제대로 작동이 되는 것을 확인할 수 있었습니다. 그래서 어디가 잘못되어서 이러는 것인지 전혀 감이 잡히지 않는 상황이 계속해서 이어지고 있었습니다.



일단 여기서는 테이블안에 있는 테이블명을 가지고 올 수 있지, 정작 이 단계에서 알고자 했는 데이터 베이스의 테이블 안에 얼마나 많은 row(행)이 있는지에 대해서는 알 수 없다는 문제점이 나왔습니다.




그래서 답답한 마음에 일단 DB Browser에서 SQL구문을 입력해 보았습니다. 그런데 처음에는 에러가 났었고, 제대로 작동을 하기 위해서는 테이블명에다가 ""를 붙여 주어야 하는 것을 볼 수 있었습니다.



그래서 위 스크린샷과 같이 sqlCode라는 변수를 따로 만들어서 SQL구문을 다음과 같이 만들었습니다. "SELECT * FROM '%s'" % stockCode 라고 해서, 테이블명이 들어가는 부분에다가 ' ' 를 붙였습니다.



그러했더니 이제는 제대로 들어가는 것을 볼 수 있었습니다. 한마디로 이제까지 계속해서 에러가 나오는 부분에서 겨우 에러가 안 나오는 것을 볼 수 있었다는 것 입니다.



정말인지 이 단계에서 그 ' ' 를 붙여야 한다는 것을 몰라서 하루 이상이 걸리고 말았습니다. 아무튼 이번일로 인해서 하나 알게 된 것은, 우선 SQL query가 의심이 되거든 DB Browser에서 한번 실행을 시켜보고 나서 생각을 해보라는 것 입니다. 이것 때문에 겨우 어디가 문제인지 알게 되었습니다.

  1. Jet 2019.06.01 16:20

    안녕하십니다. 포스팅하시는 글들을 모두 하나하나 읽어보면서 프로그램을 짜보고 있는 사람입니다.
    정말 유익하고 코딩능력이 좋지않은 저도 보면서 코드를 짤수있을정도로 잘 설명되어있습니다~

    다른 에러들은 잡으면서 여기까지 왔는데 sql에러에 대해서는 도저히 알수가 없어서 그러는데 도움을 좀 요청해도 될까요?

    • 안녕하세요?
      사정이 있어서 답글이 늦어졌습니다.
      어떤 에러인지 파이참의 에러 메세지를 알려주시면 제가 아는 한에서 도와드리겠습니다.
      아니면 영어가 되신다면 stack overflow같은 곳에 구글링으로 파이참 에러 메세지를 검색하는 것으로 해결책을 찾아볼수 있습니다.

+ Recent posts