添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
2、data = 需要插入的dataframe数据。 table_name = 需要插入的表名称 conn = cx_Oracle.connect('res_gjcj/[email protected]:31521/rkqry') cursor = conn.cursor() columns_names = list(data.columns) query = "INSERT INTO " + '"' + table_name + '"' + ' ' + str(list(data.columns)).replace("'",'').replace('[','(').replace(']',')') + " VALUES ('%s'" + ", '%s'" * ( len(columns_names) - 1 ) + ')' for i in range(len(data)): insert_list = data.iloc[[i],:].values.tolist()[0] cursor.execute(query % tuple(insert_list)) except: conn.commit() # 关闭游标 cursor.close() conn.close() from sqlalchemy import create_engine conn = 'res_gjcj/[email protected]:31521/rkqry' engine = create_engine(conn , echo=False,encoding='utf-8') data.to_sql('table_name', con = engine , if_exists = 'replace' , index = False)

然后报错: \color{red}{ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID}

查询相关资料后发现是:因为cx_Oracle不会去读我们配置的tnsname.ora文件,而是通过传进去的参数来构造连接url。
具体可以 参考文章

def Input_to_db(data,table_name):
    ip = '10.64.39.93'
    port = '31521'
    uname = 'res_gjcj' # 用户名
    pwd = 'res_gjcj_asd' # 密码
    tnsname = 'rkqry' # 实例名    
    dsnStr = cx_Oracle.makedsn(ip, port, service_name=tnsname)
    connect_str = "oracle://%s:%s@%s" %(uname, pwd, dsnStr)
    engine = create_engine(connect_str, encoding='utf-8')    
    conn = cx_Oracle.connect(uname, pwd, dsn=dsnStr)   
    data.to_sql(table_name, con=engine,if_exists='append',index=False,chunksize=100) #,dtype='utf-8'
    engine.close
    conn.close()

修改后就可以直接将dataframe写入了

4、写入时间比较

测试了两种方式,效果如下: