数据库实操——pandas写入数据库数据
生活随笔
收集整理的這篇文章主要介紹了
数据库实操——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.rollbackfinally: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 insertparameters:*) 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()總結
以上是生活随笔為你收集整理的数据库实操——pandas写入数据库数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机——SPI
- 下一篇: elasticsearch mongod