数据库实操——pandas写入数据库数据

1、Mysql

(1)插入数据

因为pymysql不识别除%s之外的其他字符,例如%d,%f,因此,将sql语句的values全部设置为%s

def insertdata(data,table_name,connect):

    c_name = str(data.columns.tolist()).replace("'","").replace("[",'').replace("]",'').replace(" ","")
    c_type = str(['%s' for i in range(len(data.columns.tolist()))]).replace("'","").replace("[",'').replace("]",'').replace(" ","")

    data = [tuple(data.iloc[i]) for i in range(data.shape[0])]
    sql =  "insert into "+str(table_name)+"("+str(c_name)+") Values("+str(c_type)+");"

    cursor = connect.cursor()
    try:
        cursor.executemany(sql, data)
    except Exception as e:
        print("执行MySQL: %s 时出错:%s" % (sql, e))
        connect.rollback
    finally:
        cursor.close()
        connect.commit()
        connect.close()

t = pd.DataFrame([[1,2],[3.0,4.0]] ,columns=['t1','t2']) 
#connect是连接数据库信息
insertdata(t,'test',connect)

2、Oracle

(1)插入数据

def insert_multiple(table_name, data, conn_db):
    """multiple insert
       parameters:
       *) table_name : table_name to load
       *) df : dataframe to load
       *) conn_db : a connection object from cx_oracle or open_connection
       *) batch_size : batch size of commit
    """
    cur = conn_db.cursor()
    sql = "INSERT INTO {0} ({1}) VALUES (:{2})".format(table_name,
                                                      ', '.join(data.columns),
                                                    ', :'.join(list(map(str,range(1, len(data.columns)+1)))))
#    print(sql) 
    rows = []
    for x in data.values:
        rows.append([None if pd.isnull(y) else y for y in x])
    cur.executemany(sql,rows)   
    conn_db.commit()
    conn_db.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱缘之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值