金融量化学习---Python, MySQL, Pandas

这里用来记录一些在金融领域,尤其是银行相关的资金、债券、票据中应用到的数据管理与分析, 编程等心得或笔记,以及个人的一点小小兴趣(易经八卦、藏密禅修)等

导航

Python 操作MySQL

pymysql的使用

起手式--Python连接MySQL的几种方式:

1.方式一:config+db+cur.execute (变量替换)

import pymysql
#开始连接数据库,使用pymysql,需要先import
config={
    "host":"127.0.0.1",
    "port":3306,
    "user":"root",
    "password":"123456",
    "database":"market_data"#设置要连接的数据库名
    }
db = pymysql.connect(**config)

sql1="insert into market_data.snap_fx_mid_price (datetime, currency_pair_cn, currency_pair_eg, fx_rate,bps) values (%s,%s,%s,%s,%s)" 
col1=(dt,vrtName,vrtEName,price,bp)
cur=db.cursor()  ##获取游标
cur.execute(sql1,col1)
db.commit()

#关闭游标和数据库的连接
cur.close()
db.close()

2.方式二: conn+execute(sql)

#重置gl00501表中id列的序号,使之连续
conn=py.connect('localhost',user='root',passwd='123456',db='ods_data')
cur=conn.cursor()
sql1='set @i=0;'
sql2='update ods_data.gl00501 set id=(@i:=@i+1);'
sql3='alter table ods_data.gl00501 auto_increment =0;'
cur.execute(sql1)
cur.execute(sql2)
cur.execute(sql3)
cur.close()
conn.close()
end_time=time.time()

3.方式三 pandas+config+db+read_sql

import pandas as pd
import pymysql as py
from sqlalchemy import create_engine

#开始连接数据库,使用pymysql,需要先import
config={
    "host":"127.0.0.1",
    "port":3306,
    "user":"root",
    "password":"123456",
    "database":"temp_practice"#设置要连接的数据库名
    }
db = py.connect(**config)

#导入表格
df_a=pd.read_sql('SELECT * FROM temp_practice.aaa', db)
df_b=pd.read_sql('SELECT * FROM temp_practice.bbb', db)
df=pd.read_sql('select * from temp_practice.aaa union SELECT id, name, phone, "" comments FROM temp_practice.bbb',db)

print(df_a)
print(df_b)
print(df)

#sqlalchemy登场
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/temp_practice')
#可以使用 echo=True 来显示加载数据库所执行的SQL语句

#将读好的df列表数据写入SQL对应表中
df=df.to_sql('aaaa',engine, if_exists='replace', index=False)
#写入文件要注意的,应该保持源表的列名与目标数据表的列名一致,否则不能插入.
#先在config里指定数据库名称, 然后在df.to_sql里直接指定表名即可.
#if_exists有三种选项, replace(替代), append(追加), fail (什么都不做)

cur=db.cursor()  
cur.close()
db.close()
print("所有数据已经成功添加")

4.方式三 pandas+config+db+read_sql

#sqlalchemy登场
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/temp_practice')
#可以使用 echo=True 来显示加载数据库所执行的SQL语句

#将读好的df列表数据写入SQL对应表中
df=df.to_sql('aaaa',engine, if_exists='replace', index=False)
#写入文件要注意的,应该保持源表的列名与目标数据表的列名一致,否则不能插入.
#先在config里指定数据库名称, 然后在df.to_sql里直接指定表名即可.
#if_exists有三种选项, replace(替代), append(追加), fail (什么都不做)

cur=db.cursor()  
cur.close()
db.close()

参考文档

https://www.cnblogs.com/guyouyin123/p/11396888.html
https://zhuanlan.zhihu.com/p/139763027

posted on 2022-11-16 13:12  chengjon  阅读(72)  评论(0编辑  收藏  举报