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

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. 调用外部 DLL 中的函数(2. 晚绑定)

    , b, t, );end; procedure TForm1.FormDestroy(Sender: TObject);begin  FreeLibrary(inst);  {记得释放}end; e ...

  2. 手机web不同屏幕字体大小高度自适应

    body{font-size:0.6rem:} <script> //使用rem策略,不断更新html的fontsize (function(){     function sizeHtm ...

  3. c# T obj = default(T);

    泛型类和泛型方法同时具备可重用性.类型安全和效率,这是非泛型类和非泛型方法无法具备的.泛型通常用在集合和在集合上运行的方法中..NET Framework 2.0 版类库提供一个新的命名空间 Syst ...

  4. day04<Java语言基础+>

    Java语言基础(循环结构概述和for语句的格式及其使用) Java语言基础(循环结构for语句的练习之获取数据) Java语言基础(循环结构for语句的练习之求和思想) Java语言基础(循环结构f ...

  5. 服务器允许js跨域

    header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Methods:POST,GET'); header('Ac ...

  6. Python 入门(五)条件判断和循环

    if语句 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if age > ...

  7. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

    MySQL在linux安装之后,连接到服务,报了下面的错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socke ...

  8. hex()

    hex() 用于将十进制数字转换成十六进制 In [1]: hex(10) Out[1]: '0xa' In [2]: hex(11) Out[2]: '0xb'

  9. git的常见问题

    今天把电脑清理了下再push就出问题了 ,报这个错Failed with error: fatal: unable to access 'https://git.oschina.net/dubo_/G ...

  10. Solr可视化简单的操作

    Solr可视化简单的操作 启动solr服务器;在浏览器输入Tomcat启动: http://192.168.191.142:8080/solr/#/ Ø  添加core,首先在存放home的文件下创建 ...