INVESTAR / StockAnalysisInPython

456 stars 413 forks source link

5.02 와 5.04 ERROR #120

Open hsollc opened 2 years ago

hsollc commented 2 years ago

저자님. 어려움이 있지만 열심히 배우고 있습니다. 5장관련하여

  1. 5.04 create Table상의 코드를 그대로 복붙하였는데 다음과 같은 에러메세지가 뜹니다.

    File "C:\stockpac\53ct.sql.py", line 1 CREATE TABLE IF NOT EXISTS company_info ( ^ SyntaxError: invalid syntax

  2. 5.02 naverdatabase를 실행하면 그림은 나오는데 차트가 그려지지 않은 상태입니다.(아무래도 Investar가 제대로 설치 안된 것 같습니다마는...)- 말씀하신대로 네이버정책변화에 따라 검색부분 관련 코드 수정은 다했습니다.

  3. (추가) 상호 관련이 있을 것으로 보여집니다마는

6.01 Efficient Frontier에서도 이를 그대로 실행하면 다음과 같은 에러메세지가 뜹니다.

Traceback (most recent call last): File "C:\stockpac\60ef.py", line 26, in risk = np.sqrt(np.dot(weights.T, np.dot(annual_cov, weights))) File "<__array_function__ internals>", line 5, in dot ValueError: shapes (0,0) and (4,) not aligned: 0 (dim 1) != 4 (dim 0)

또한 line5 에서 s를 stocks로 바꾸니 다음과 같은 에러가 보입니다.

ValueError: Code(['삼성전자', 'SK하이닉스', '현대자 동차', 'NAVER']) doesn't exist. Traceback (most recent call last): File "C:\Users\hsollc\Anaconda3\lib\site-packages\pandas\io\sql.py", line 2056, in execute cur.execute(*args, **kwargs) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\cursors.py", line 148, in execute result = self._query(query) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\cursors.py", line 310, in _query conn.query(q) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\connections.py", line 548, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\connections.py", line 775, in _read_query_result result.read() File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\connections.py", line 1156, in read first_packet = self.connection._read_packet()
File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\connections.py", line 725, in _read_packet
packet.raise_for_error() File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '삼성전자', 'SK하이닉스', '현대자 동차', 'NAVER']' and date >= '20...' at line 1")

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "C:\stockpac\60ef.py", line 10, in
df[s] = mk.get_daily_price(stocks, '2016-01-04', '2018-04-27')['close'] File "C:\stockpac\Investar\Analyzer.py", line 87, in get_daily_price df = pd.read_sql(sql, self.conn) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pandas\io\sql.py", line 602, in read_sql return pandas_sql.read_query( File "C:\Users\hsollc\Anaconda3\lib\site-packages\pandas\io\sql.py", line 2116, in read_query cursor = self.execute(args) File "C:\Users\hsollc\Anaconda3\lib\site-packages\pandas\io\sql.py", line 2068, in execute raise ex from exc pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT FROM daily_price WHERE code = '['삼성전자 ', 'SK하이닉스', '현대자동차', 'NAVER']' and date >= '2016-01-04' and date <= '2018-04-27'': (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '삼성전자', 'SK하이닉스 ', '현대자동차', 'NAVER']' and date >= '20...' at line 1")

많이 여쭈어봐서 죄송합니다마는 달리 방법이 없어서요....ㅠㅠㅠ

바쁘시겠지만 시간되시는 대로 문제해결관련 고견을 말씀해 주시기 바랍니다. (검색해 봐도 달리 해결방안이 안보여서입니다.)

미리 감사드립니다....

INVESTAR commented 2 years ago

아래 코드는 마리아디비에 주가 데이터를 저장할 테이블을 만들기 위한 SQL 코드이기 때문에 파이썬으로 실행할 수는 없고, HeidiSQL이나 MySQL Client로 실행하셔야 합니다.

CREATE TABLE IF NOT EXISTS company_info (
    code VARCHAR(20),
    company VARCHAR(40),
    last_update DATE,
    PRIMARY KEY (code)
);

CREATE TABLE IF NOT EXISTS daily_price (
    code VARCHAR(20),
    date DATE,
    open BIGINT(20),
    high BIGINT(20),
    low BIGINT(20),
    close BIGINT(20),
    diff BIGINT(20),
    volume BIGINT(20),
    PRIMARY KEY (code, date)
);

인터넷에서 관계형 데이터베이스 테이블과 SQL 사용법에 대해서 검색해보시기 바랍니다.