반응형

0.개요

PyMYSQL은 DB(MySQL,mariaDB)같은 DB 프로그램을 사용할 수 있는 python library이다.

 

1.기본 정보

PyMYSQL에 대한 정보는 아래 홈페이지에 접속해서 보면 자세한 내용을 확인할 수 있다. 사용하기 위한 기본 요구사항과 기본 예제,문서, 소스코드를 확인할 수 있다.

PyMYSQL Homepage : https://github.com/PyMySQL/PyMySQL

기본 요구사항은 아래와 같다. 내 PC에 설치된 사항은 CPython 3.10.4이며 mariabd 10.6.7이 설치되어 있다.

Requirements

  • Python -- one of the following:
  • MySQL Server -- one of the following:
#python3 -V
Python 3.10.4

#mariadb -V
mariadb  Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

 

*maria db에 진입해서 version 정보를 읽는 방법과 실제 version정보를 확인할 수 있다.

이와 동일하게 python에서도 할 수 있는 걸 먼저 python code로 구현해 본다.

#mariadb -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select version();
+-------------------------+
| version()               |
+-------------------------+
| 10.6.7-MariaDB-2ubuntu1 |
+-------------------------+
1 row in set (0.000 sec)

 

- mariadb version을 읽어오는 python code

import pymysql

connection = pymysql.connect(host='localhost', port=3306, db='db_name', 
    user='root', passwd='mypasswd', autocommit=True)  

cursor = connection.cursor()
cursor.execute("SELECT VERSION();")
result = cursor.fetchone()

print ("MariaDB version : {}".format(result))

connection.close()

위 코드 수행해서 읽어온 maria db version 정보이며 실제 maria db를 수행해서 읽어온 것과 동일한 것을 확인 할 수있다.

MariaDB version : ('10.6.7-MariaDB-2ubuntu1',)

 

 

잘되다가 아래 에러가 나면서 문제가 되는데 왜 발생하는 지 잘 모르겠다.

import pandas as pd
import yfinance as yf
import pandas_datareader as web
import pymysql
from sqlalchemy import create_engine

tickers = [
    'SPY',  # 미국 주식
    'IEV',  # 유럽 주식 
    'EWJ',  # 일본 주식
    'EEM',  # 이머징 주식
    'TLT',  # 미국 장기채
    'IEF',  # 미국 중기채
    'IYR',  # 미국 리츠
    'RWX',  # 글로벌 리츠
    'GLD',  # 금
    'DBC'  # 상품
]

all_data = {}
for ticker in tickers:
    #all_data[ticker] = web.DataReader(ticker, 'yahoo', start='1993-01-22')
    all_data[ticker] = yf.download(ticker, start='1993-01-22')

prices = pd.DataFrame(
    {tic: data['Adj Close']
     for tic, data in all_data.items()})

engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/stock_db')
prices.to_sql(name='sample_etf', con=engine, index=True, if_exists='replace')
engine.dispose()

반응형

'python > python basic' 카테고리의 다른 글

[python]class  (0) 2022.08.11
[python][graph]sine wave  (0) 2018.12.02
python basic  (0) 2018.11.12
python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12

+ Recent posts