Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment insérer une trame de données dans une table oracle illégale/variable oracle

Vous pouvez utiliser df2.values.tolist afin d'obtenir une liste de paramètres, et un code comme ci-dessous afin d'insérer les valeurs dans le dataframe :

import pandas as pd
import cx_Oracle
conn = cx_Oracle.connect('un/[email protected]:port/dbname')

try:
    cursor = conn.cursor()
    df2 = pd.DataFrame({'names':['Pepe','Luis'], 'stages': [0,1], 'order': [3, 2]}) 
    col_list = df2.values.tolist()

    cursor.prepare("INSERT INTO customer_prf(names,label,type,id,n_stage,ctry,\"order\") VALUES(:1,'references','text',seq_customer.nextval,:2,2,:3)")
    cursor.executemany(None,col_list)
    print("executed!")
except Exception as err:
    print('Error', err)
else:
    conn.commit()

  • préférez utiliser executemany plutôt que execute comme étant plus performant

  • créer une séquence (seq_customer ) et ajoutez à votre liste de valeurs (seq_customer.nextval ) comme utilisant DB version 11g, si votre base de données était de version 12c+, alors la colonne ID pourrait être identifiée dans l'instruction create table ddl (par exemple lors de la création de la table ) tels que

    ID INT generated always as identity primary key