인프런 커뮤니티 질문&답변

captainsolo님의 프로필 이미지

작성한 질문수

Python을 이용한 주가 백테스팅 시스템 구축하기

데이터베이스에 받아온 데이터 집어넣기

에러가 나는데 어디가 잘못 된걸까요?

20.10.20 10:12 작성

·

54

0

답변 1

0

captainsolo님의 프로필 이미지
captainsolo
질문자

2020. 10. 20. 11:11

[ 전체코딩내용 ]

# pip install pywin32

from pwd import credentials

import win32com.client

import pythoncom

import time

import mysql.connector

class loginEventHandler:

    is_login=False

    def OnLogin(self,code,msg):

        print(code,msg)

        print("로그인 완료")

        loginEventHandler.is_login=True

class t8430eventHandler:

    is_called = False

    def OnReceiveData(self,tr):

        print("불러오기 완료")

        print(tr)

        t8430eventHandler.is_called = True

    

session = win32com.client.DispatchWithEvents("XA_Session.XASession",loginEventHandler)

session.ConnectServer("hts.ebestsec.co.kr",20001)

print(session.IsConnected())

if session.IsConnected():

    session.Login(credentials["id"], credentials["password"], credentials["cert_pwd"],0,0)

while loginEventHandler.is_login == False:

    pythoncom.PumpWaitingMessages()

# C:\eBEST\xingAPI\Res

t8430_sesstion = win32com.client.DispatchWithEvents("XA_DataSet.XAQuery",t8430eventHandler)

t8430_sesstion.ResFileName = 'C:\\eBEST\\xingAPI\\Res\\t8430.res'

t8430_sesstion.SetFieldData("t8430InBlock","gubun",0 ,0)

t8430_sesstion.Request(0)

while t8430eventHandler.is_called == False:

    pythoncom.PumpWaitingMessages()

count = t8430_sesstion.GetBlockCount("t8430OutBlock")

print(count)

connection = mysql.connector.connect(user="root", password="may6788", host="127.0.0.1")

cursor_a = connection.cursor(buffered=True)

cursor_a.execute("create schema backtest")

sql = "CREATE TABLE 'backtest'.'total_company_list' ('hname' VARCHAR(45) NOT NULL,'shcode' VARCHAR(20) NULL,'expcode' VARCHAR(45) NULL,'eftgubun' VARCHAR(5) NULL,'uplmtprice' INT NULL,'dnlmtprice' INT NULL,'jnilclose' INT NULL,'memedan' VARCHAR(45) NULL,'recprice' INT NULL,'gubun' VARCHAR(5) NULL)"

cursor_a.execute(sql)

cursor_a.execute("use backtest")

for index in range(count):

    hname = t8430_sesstion.GetFieldData("t8430OutBlock","hname",index)

    shcode = t8430_sesstion.GetFieldData("t8430OutBlock","shcode",index)

    expcode = t8430_sesstion.GetFieldData("t8430OutBlock","expcode",index)

    eftgubun = t8430_sesstion.GetFieldData("t8430OutBlock","etfgubun",index)

    uplmtprice = t8430_sesstion.GetFieldData("t8430OutBlock","uplmtprice",index)

    dnlmtprice = t8430_sesstion.GetFieldData("t8430OutBlock","dnlmtprice",index)

    jnilclose = t8430_sesstion.GetFieldData("t8430OutBlock","jnilclose",index)

    memedan = t8430_sesstion.GetFieldData("t8430OutBlock","memedan",index)

    recprice = t8430_sesstion.GetFieldData("t8430OutBlock","recprice",index)

    gubun = t8430_sesstion.GetFieldData("t8430OutBlock","gubun",index)

    cursor_a.execute("insert into total_company_list values ('{}','{}','{}','{}','{}','{}','{}','{}','{}','{}')".format(hname,shcode,expcode,eftgubun,uplmtprice,dnlmtprice,jnilclose,memedan,recprice,gubun))

    print(hname,":", gubun)

    connection.commit()

    

[오류내용]

Traceback (most recent call last):

  File "xing.py", line 49, in <module>

    cursor_a.execute("create schema backtest")

  File "C:\Users\jeffrey\anaconda3\envs\32bit_env\lib\site-packages\mysql\connector\cursor.py", line 569, in execute      

    self._handle_result(self._connection.cmd_query(stmt))

  File "C:\Users\jeffrey\anaconda3\envs\32bit_env\lib\site-packages\mysql\connector\connection.py", line 599, in cmd_query

    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))

  File "C:\Users\jeffrey\anaconda3\envs\32bit_env\lib\site-packages\mysql\connector\connection.py", line 487, in _handle_result

    raise errors.get_exception(packet)

mysql.connector.errors.DatabaseError: 1007 (HY000): Can't create database 'backtest'; database exists