Pandas操作数据库新建表&增加现有表数据
1、连接数据库
import pandas as pd
import pymysql
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://root:admin@localhost:3306/nodb')
2、新增表
创建一个DataFrame对象
df = pd.DataFrame({'id':[1], 'name':['a'], 'code':['a'], 'color':['a'], 'yn':[1]})
df
df.to_sql('test_tag1', engine, index=False)
这样的操作之后是生成了一个新表,index参数表示不把索引写到数据库。
3、现有表新增数据
df.to_sql('mg_tag1', engine, index=False, if_exists='append')
比上个操作增加了一个参数,表结构存在就添加数据就好了。
PS:to_sql参数
参数: |
name:string SQL表的名称。 con:sqlalchemy.engine.Engine或sqlite3.Connection 使用SQLAlchemy可以使用该库支持的任何数据库。 为sqlite3.Connection对象提供了旧版支持。 schema:string,optional 指定架构(如果数据库支持)。如果为None,请使用默认架构。 if_exists:{'fail','replace','append'},默认'fail' 如果表已存在的情况如下,
index:布尔值,默认为True 将DataFrame索引写为列。使用index_label作为表中的列名。 index_label:字符串或序列,默认为None 索引列的列标签。如果给出None(默认)且 index为True, 则使用索引名称。 如果DataFrame使用MultiIndex,则应该给出一个sequence。 chunksize:int,可选 行将一次批量写入的数量。默认情况下,所有行都将立即写入。 dtype:dict,可选 指定列的数据类型。键应该是列名,值应该是SQLAlchemy类型, 或sqlite3传统模式的字符串。 |
异常: |
ValueError异常 当表已经存在且if_exists为'fail'时(默认值)。 |