循环创建表,并且创建主键、外键

import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.types import NVARCHAR, Float, Integer def pd2sql():
"""
to_sql目前只支持两类mysql引擎一个是sqlalchemy和sqlliet3
:return:
"""
# 初始化数据库连接,使用pymysql模块
# MySQL的用户:root, 密码:147369, 端口:3306,数据库:mydb
# ?charset=utf8 指定数据库编码
engine = create_engine('mysql+pymysql://root:@localhost:3306/pandas2mysql?charset=utf8')
conn = engine.connect()
for i in range(1, 10):
# 指定字段的数据类型
dtypedict = {
'index_code': NVARCHAR(length=255),
'date': NVARCHAR(length=255),
'open': NVARCHAR(length=255),
'close': NVARCHAR(length=255),
'low': NVARCHAR(length=255),
'high': NVARCHAR(length=255),
'volume': NVARCHAR(length=255),
'money': NVARCHAR(length=255),
'change': NVARCHAR(length=255)
} csv_path = r'E:\data\yucezhe\trading-data-push.20190201\2019-02-01 index data.csv' # 读取本地CSV文件
df = pd.read_csv(csv_path).head() # 将DataFrame储存为MySQL中的数据表,不储存index列
df.to_sql(f'csv_table{i}', engine, if_exists='replace', index=False, dtype=dtypedict) # 执行原生sql语句
# 设置主键
conn.execute(f"alter table csv_table{i} add constraint p_key primary key (index_code)") # 从表设置外键
if i%2 == 0:
conn.execute(
f"alter table csv_table{i-1} add foreign key (index_code) references csv_table{i}(index_code)") print(f"Write to MySQL successfully! ---- csv_table{i}")
engine.dispose() pd2sql() # 对已存在的表做主键:alter table csv_short1 add constraint p_key primary key (index_code); # 对已存在的表做外键:alter table csv_short1 add foreign key (index_code) references csv_short2(index_code); # 内连接查询:select * from a,b where a.x = b.x

通过pd.to_sql()将DataFrame写入Mysql的更多相关文章

  1. Spark:将DataFrame写入Mysql

    Spark将DataFrame进行一些列处理后,需要将之写入mysql,下面是实现过程 1.mysql的信息 mysql的信息我保存在了外部的配置文件,这样方便后续的配置添加. //配置文件示例: [ ...

  2. SparkSQL之dataframe写入mysql报错

    一.异常情况及解决方案 在使用Spark SQL的dataframe数据写入到相应的MySQL表中时,报错,错误信息如下: 代码的基本形式为: df.write.jdbc(url, result_ta ...

  3. Spark操作MySQL,Hive并写入MySQL数据库

    最近一个项目,需要操作近70亿数据进行统计分析.如果存入MySQL,很难读取如此大的数据,即使使用搜索引擎,也是非常慢.经过调研决定借助我们公司大数据平台结合Spark技术完成这么大数据量的统计分析. ...

  4. 将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy

    将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy import pandas as pd from sqlalchemy import create_engine ...

  5. Spark操作dataFrame进行写入mysql,自定义sql的方式

    业务场景: 现在项目中需要通过对spark对原始数据进行计算,然后将计算结果写入到mysql中,但是在写入的时候有个限制: 1.mysql中的目标表事先已经存在,并且当中存在主键,自增长的键id 2. ...

  6. spark基础知识介绍(包含foreachPartition写入mysql)

    数据本地性 数据计算尽可能在数据所在的节点上运行,这样可以减少数据在网络上的传输,毕竟移动计算比移动数据代价小很多.进一步看,数据如果在运行节点的内存中,就能够进一步减少磁盘的I/O的传输.在spar ...

  7. PHP如何通过SQL语句将数据写入MySQL数据库呢?

    1,php和MySQL建立连接关系 2,打开 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?phpmysql_connect(&qu ...

  8. python执行shell获取硬件参数写入mysql

    最近要获取服务器各种参数,包括cpu.内存.磁盘.型号等信息.试用了Hyperic HQ.Nagios和Snmp,它们功能都挺强大的,但是于需求不是太符,亦或者太heavy. 于是乎想到用python ...

  9. saltstack:使用教程之一安装及客户端返回写入MySQL

    saltstack使用教程: 1.安装: 需要epel的yum源,没有的话把下面的复制并新建个文件 /etc/yum.repos.d/epel.repo 粘贴即可: [epel] name=Extra ...

随机推荐

  1. 【Java面试题】37 说出ArrayList,Vector, LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此 数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插 ...

  2. 腾讯企业邮箱POP,SMTP分别是什么

    腾讯企业邮箱在做域名解析的时候不用做pop3和 smtp设置,可以使用下列的协议:   POP3/SMTP协议 接收邮件服务器:pop.exmail.qq.com (端口 110),使用SSL,端口号 ...

  3. 数字转人民币大写(SQL SERVER)

    --数字转人民币大写NumToRMB ---新建方法create  FUNCTION dbo.NumToRMB (@num numeric(14,5))   RETURNS varchar(100) ...

  4. Ubuntu 12.04/13.04 安装 Oracle11gR2:该笔记已经陈旧!请参考后续的笔记

    注意点: 在 ubuntu的 /bin 下建立以下几个基本命令的链接: basename awk sh->bash | sh -> ksh 安装以下几个必须的包: binutils bui ...

  5. Java类的设计----多态性及其应用

    多态性及其应用 多态性 多态—在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Stude ...

  6. Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续二)

    一.URL分析 通过对“Python机器学习”结果抓包分析,有两个无规律的参数:_ksTS和callback.通过构建如下URL可以获得目标关键词的检索结果,如下所示: https://s.taoba ...

  7. Python 入门(六)Dict和Set类型

    什么是dict 我们已经知道,list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字: ['Adam', 'Lisa', 'Bart'] 或者考试的成绩列表: [95, 85, 59] ...

  8. string permutation with upcase and lowcase

    Give a string, which only contains a-z. List all the permutation of upcase and lowcase. For example, ...

  9. 查看系统进程:ps

    ps命令用于查看系统进程,常见用法如下: [root@localhost ~]$ ps aux # 查看所有的进程 [root@localhost ~]$ ps aux | grep nginx # ...

  10. Unity3d 手机屏幕自动适配

    我提到手机自动适配的一个方法中:postion和Scale,“比例”概念适配手机.原始资源是480*800 经过实际项目考验,个人感觉: 1,UICamera是自动适配分辨率,UI上也是拉伸.放大UI ...