pandas 自带了 to_sql
方法, 可以将数据集写入数据库.
def to_sql(name, con, flavor=None,
schema=None, if_exists='fail',
index=True, index_label=None,
chunksize=None, dtype=None)
常用的几个参数:
name: 写入数据库的表名
con: 数据库连接
if_exists: 若数据库中存在同名表, 则采取什么操作. 可以使用的值有
'fail': 写入失败
'replace': 删除原表, 重新创建新表, 写入数据
'append': 在原表的基础上, 在表尾插入新数据
默认是 'fail'
index: 是否将 dataframe 的 index 写入数据库. 默认是 True
dtype: 写入数据库时, 各个列对应的数据格式. 指定格式需要从 sqlalchemy 导入 types 模块. 形式是
{
'col1': types.VARCHAR(20),
'col2': ......
}
- 写入 Oracle 数据库时, 使用 cx_Oracle 包创建的
conn
对象并不能用在to_sql
函数中, 需要使用sqlalchemy
创建conn
对象
from sqlalchemy import types, create_engine
# 填入Oracle数据库的登录名, 密码, 地址, 端口, 服务名 就可以创建数据库连接
conn = create_engine('oracle+cx_oracle://username:password@location:port/?service_name={}')
df.to_sql('table_name', conn, if_exists='fail', dtype={})
可以在 dtype
参数中指定每一列对应的数据格式