답변 1
0
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