반응형
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 |