Python量化数据仓库搭建系列2:Python操作数据库
本系列教程为量化开发者,提供本地量化金融数据仓库的搭建教程与全套源代码。我们以恒有数(UDATA)金融数据社区为数据源,将金融基础数据落到本地数据库。教程提供全套源代码,包括历史数据下载与增量数据更新,数据更新任务部署与日常监控等操作。
在上一节讲述中,我们选择了MySQL作为本系列教程的数据库,故本文着重讲解Python操作MySQL的步骤,并封装方法。在文末简单介绍Python操作MongoDB、SQLite、PostgreSQL数据库;
一、pymysql用法
1、安装pymysql模块
pip install pymysql
2、连接数据库
from pymysql import *
# 打开数据库连接,数据库参数可以在MySQL界面或数据库配置文件中查看
conn = pymysql.connect(host = '数据库IP',
port = '端口',
user = '用户名',
password = '密码',
database='数据库名称')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
# 在数据库操作执行完毕后,关闭数据库连接
# conn.close()
3、常见SQL代码执行
from pymysql import *
# 执行SQL代码:建表、删表、插入数据
def Execute_Code(sql_str):
# 打开数据库连接
conn = pymysql.connect(host = '127.0.0.1',port = 3306,user = 'root',
password = '密码',database='udata')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
try:
# 使用execute()方法执行SQL
cursor.execute(sql)
# 提交到数据库执行
conn.commit()
except:
# 发生错误时回滚
conn.rollback()
# 关闭数据库连接
conn.close()
A、建表
sql_str = '''CREATE TABLE TB_Stock_List_Test (
secu_code CHAR(20),
hs_code CHAR(20),
secu_abbr CHAR(20),
chi_name CHAR(40),
secu_market CHAR(20),
listed_state CHAR(20),
listed_sector CHAR(20),
updatetime CHAR(20));'''
Execute_Code(sql_str)
B、插入数据
sql_str = '''
INSERT INTO TB_Stock_List_Test
(`secu_code`,`hs_code`,`secu_abbr`,`chi_name`,`secu_market`,`listed_state`
,`listed_sector`,`updatetime`)
VALUES
('000001','000001.SZ','平安银行','平安银行股份有限公司','深圳证券交易所','上市',
'主板','2021-10-25 20:10:55');
'''
Execute_Code(sql_str)
C、更新数据
sql_str = "UPDATE tb_stock_list SET updatetime = '2021-10-30 20:10:55' "
Execute_Code(sql_str)
D、删除数据
sql_str = 'DELETE FROM tb_stock_list'
Execute_Code(sql_str)
E、删除表格
sql_str = 'DROP TABLE IF EXISTS tb_stock_list'
Execute_Code(sql_str)