1.应用

import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://user:password@localhost/test')
df = pd.read_sql('test', engine)
df.to_sql('test', engine)

2.用原生SQL创建表,再使用to_sql进行写入

原因:
1)to_sql无法指定索引
2)to_sql默认将整型映射为bigint(20),字符串映射为text,会浪费很多空间
注意:
1)if_exists='append’表示添加数据,因为数据表是我们提前创建的
2)index=‘False’表示不要将pandas中的索引添加到数据库
3)如果pandas中缺少字段,则在写入sql时,没有指明的列会设为null,或默认值,或自动增加
4) 如果类型不同,会自动更改为sql里的类型,如果还不行则考虑使用dtype参数

import pandas as pd
from sqlalchemy import create_engine
# 使用原生的sql创建表
with engine.connect() as connection:result = connection.execute("""CREATE TABLE test (`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(20),PRIMARY KEY (`id`))""")
# 再写入数据
df.to_sql('test', engine,if_exists='append',index=False)

3.dtype

查看sqlalchemy与sql映射的数据类型:https://docs.sqlalchemy.org/en/13/core/type_basics.html

from sqlalchemy.types import DATE,CHAR,VARCHAR
DTYPES = {'col_1字段名称' : DATE, 'col_2':CHAR(4),'col_3':VARCHAR(10)}
df.to_sql(....,dtype = DTYPES)

4.API

def to_sql(self, name, con, schema=None, if_exists='fail', index=True,index_label=None, chunksize=None, dtype=None):
参数 描述
name 表名
con 驱动引擎,一般使用SQLAlchemy
if_exists {‘fail’,‘replace’,‘append’},默认’fail’。fail:如果存在表报错;replace:如果存在则覆盖;append:如果存在则追加
index boolean,默认为True,将DataFrame的索引写为列,用index_label作为列名
index_label str或list,默认为none,指定index对应的列名,如果不指定, 默认是index
chunksize int,可选,一次写入多少行,默认所有行都立刻写入
dtype 字典,可选指定列的数据类型

参考:
https://blog.csdn.net/stone0823/article/details/89447982

1.首先用原生sql创建表

2.index = False
不添加索引,如果为ture,则会自动添加index列

3.if_exists=‘append’
默认是覆盖,如果已经存在则报错

5.类型对应关系
1)如果类型不一样会不会报错?比如str 写入 int

2)具体对应关系如何

pandas to_sql相关推荐

  1. pandas to_sql保存数据到数据库后,添加自增长的主键ID(PRIMARY KEY)

    构造dataframe import pandas as pd import numpy as npdf = pd.DataFrame(data=np.random.randint(0, 20, si ...

  2. 在python中用sql创建表_Python Pandas to_sql,如何用主键创建表?

    免责声明:这个答案更具实验性和实用性,但也许值得一提. 我发现类pandas.io.sql.SQLTable已命名参数键,如果为其指定字段名称,则此字段将成为主键: 不幸的是,你不能只从DataFra ...

  3. pandas to_sql填坑

    pandas作为数据分析的重要工具,经常性的与数据库进行连接,在将dataframe保存到数据库时,会用到to_sql,虽然to_sql函数可以直接将字典数据直接存入数据库,但是,to_sql限制是非 ...

  4. python读取数据库数据类型_Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】...

    本文实例讲述了Python实现从SQL型数据库读写dataframe型数据的方法.分享给大家供大家参考,具体如下: Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表 ...

  5. mysql与pandas谁快,pandas和SQL哪个快

    python pandas to_sql将excel数据导入到MySQL数据库 用python pandas to_sql写了个脚本,向MySQL数据库导入excel数据,本地其实吧, 一分钟10W条 ...

  6. python读取数据库数据类型_Python中从SQL型数据库读写dataframe型数据

    Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sq ...

  7. mysql 检索操作时间段_postgresql数据库使用说明_实现时间范围查询

    按照日期查询通常有好几种方法: 按照日期范围查询有好几种方法,日期字段类型一般为: Timestamp without timezone 方法一: select * from user_info wh ...

  8. pymysql ︱mysql的基本操作与dbutils+PooledDB使用

    之前的一篇:python︱mysql数据库连接--pyodbc 文章目录 0 安装依赖 1 连接方式 1.1 pymysql.connect直接连 1.2 pandas连接 1.3 dbutils+P ...

  9. pandas使用to_sql方法将dataframe注册为数据库表进行数据整合和数据清洗并不对比SQL操作和dataframe操作

    pandas使用to_sql方法将dataframe注册为数据库表进行数据整合和数据清洗并不对比SQL操作和dataframe操作 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的. ...

最新文章

  1. Socket SSL通讯
  2. 将窗体显示在 PageControl 上。
  3. ABAP和Java的tag(marker) interface
  4. 关于Android studio 3.0 Failure [INSTALL_FAILED_TEST_ONLY]安装失败的问题
  5. mysql索引结构优缺点_mysql索引优缺点及注意事项
  6. 编写让别人能够读懂的代码
  7. 3D脚本 maxscript入门教程(7)
  8. base64与图片互换
  9. python内存泄漏解决方案_Python内存泄漏和内存溢出的解决方案
  10. 关于EditPlus3 取消备份后再重新打开 备份设置还原到默认状态的问题
  11. AC9刷梅林安装entware usb挂载 u盘分区使用swap脚本
  12. 图像处理之均值滤波器、高斯滤波器和双边滤波器
  13. C++11多线程 内存序(std::memory_order_relaxed)
  14. undi是什么意思_undefined是什么意思
  15. 垂直网站之路:金融风暴加速向电子商务转型
  16. 漫谈程序员系列:程序员该不该考虑初创公司
  17. 第一次找工作/实习前需要准备的东西(互联网行业)
  18. 光阑,像差和成像光学仪器
  19. dblink(dblink是什么意思)
  20. 我的第一篇博客,为什么要学软件工程

热门文章

  1. as3中的 override
  2. 用SQL中的isnull函数注意了
  3. oracle提升,Oracle特权提升
  4. java的字符串指针数组,C语言字符串中的指针与数组
  5. Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)
  6. vscode的背景图设置 简单版
  7. 从零开始学前端:表格制作 --- 今天你学习了吗?(CSS:Day04)
  8. Python+numpy实现蒙特卡罗方法估计圆周率近似值
  9. C语言 传值和传指针的区别
  10. mysql路径猜解_猜解数据库(MYSQL)信息