pandas to_sql
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相关推荐
- pandas to_sql保存数据到数据库后,添加自增长的主键ID(PRIMARY KEY)
构造dataframe import pandas as pd import numpy as npdf = pd.DataFrame(data=np.random.randint(0, 20, si ...
- 在python中用sql创建表_Python Pandas to_sql,如何用主键创建表?
免责声明:这个答案更具实验性和实用性,但也许值得一提. 我发现类pandas.io.sql.SQLTable已命名参数键,如果为其指定字段名称,则此字段将成为主键: 不幸的是,你不能只从DataFra ...
- pandas to_sql填坑
pandas作为数据分析的重要工具,经常性的与数据库进行连接,在将dataframe保存到数据库时,会用到to_sql,虽然to_sql函数可以直接将字典数据直接存入数据库,但是,to_sql限制是非 ...
- python读取数据库数据类型_Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】...
本文实例讲述了Python实现从SQL型数据库读写dataframe型数据的方法.分享给大家供大家参考,具体如下: Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表 ...
- mysql与pandas谁快,pandas和SQL哪个快
python pandas to_sql将excel数据导入到MySQL数据库 用python pandas to_sql写了个脚本,向MySQL数据库导入excel数据,本地其实吧, 一分钟10W条 ...
- python读取数据库数据类型_Python中从SQL型数据库读写dataframe型数据
Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sq ...
- mysql 检索操作时间段_postgresql数据库使用说明_实现时间范围查询
按照日期查询通常有好几种方法: 按照日期范围查询有好几种方法,日期字段类型一般为: Timestamp without timezone 方法一: select * from user_info wh ...
- pymysql ︱mysql的基本操作与dbutils+PooledDB使用
之前的一篇:python︱mysql数据库连接--pyodbc 文章目录 0 安装依赖 1 连接方式 1.1 pymysql.connect直接连 1.2 pandas连接 1.3 dbutils+P ...
- pandas使用to_sql方法将dataframe注册为数据库表进行数据整合和数据清洗并不对比SQL操作和dataframe操作
pandas使用to_sql方法将dataframe注册为数据库表进行数据整合和数据清洗并不对比SQL操作和dataframe操作 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的. ...
最新文章
- Socket SSL通讯
- 将窗体显示在 PageControl 上。
- ABAP和Java的tag(marker) interface
- 关于Android studio 3.0 Failure [INSTALL_FAILED_TEST_ONLY]安装失败的问题
- mysql索引结构优缺点_mysql索引优缺点及注意事项
- 编写让别人能够读懂的代码
- 3D脚本 maxscript入门教程(7)
- base64与图片互换
- python内存泄漏解决方案_Python内存泄漏和内存溢出的解决方案
- 关于EditPlus3 取消备份后再重新打开 备份设置还原到默认状态的问题
- AC9刷梅林安装entware usb挂载 u盘分区使用swap脚本
- 图像处理之均值滤波器、高斯滤波器和双边滤波器
- C++11多线程 内存序(std::memory_order_relaxed)
- undi是什么意思_undefined是什么意思
- 垂直网站之路:金融风暴加速向电子商务转型
- 漫谈程序员系列:程序员该不该考虑初创公司
- 第一次找工作/实习前需要准备的东西(互联网行业)
- 光阑,像差和成像光学仪器
- dblink(dblink是什么意思)
- 我的第一篇博客,为什么要学软件工程