Je ne peux pas insérer de données dans la base de données à l'aide d'une requête dynamique dans le script Python
ERROR: Failed to set dependencies informations : ORA-00933: SQL command not properly ended
3 Réponses :
Déposez le semi-points à la fin de la chaîne que vous créez / exécutant. P>
Cela ne devrait pas faire partie de l'instruction SQL, plutôt utilisée dans certains outils client pour indiquer la fin d'une instruction afin que le client puisse l'envoyer à la base de données à exécuter. P>
J'ai trouvé la solution au problème
connection.commit () code> p>
Vous pouvez utiliser la méthode code> format code> dans Python comme ci-dessous:
def execute_query(self, qo): query_string = "INSERT INTO {0} (client, sis, entity_name_1, entity_name_2, flag_dep,process, flag_dep_det) VALUES ('{1}', '{2}', '{3}', '{4}', '{5}', '{6}', {7})".format(dep_table, 'CO', qo.db_src, qo.table_src, qo.table_des, qo.check_func, qo.table_des, 'NULL') cursor.execute(query_string)
Vous ne devriez pas utiliser l'opérateur
% code> pour insérer des valeurs dans votre SQL. xkcd.com/327
% s code> comme un espace réservé dans SQL est pas le même i> comme paramètre de formatage de chaîne en python
Query_String = "Insérer dans" + DEP_TABLE + "(client, sis, entité_name_1, entité_name_2, flag_dep, processus, flag_dep_det) valeurs (% s,% s,% s,% s,% s,% s,% s ); ", (" CO ", qo.db_src, qo.table_src, qo.table_des, qo.check_func, qo.table_des, aucun) code>. Vous ne pouvez pas paramétrer les noms de table, de sorte que vous aurez besoin de vétériner contre le schéma de la DB séparément.
J'ai essayé d'utiliser%% mais le même problème
J'ai essayé votre suggestion, j'ai eu une erreur: Échec de définir des informations sur les dépendances: Attendant l'objet d'une chaîne, d'unicode ou d'un objet tampon
Parce que je t'ai donné un tuple. Débarrassez-vous de
Query_string = ... code> et utilisez simplement
cursor.execute ("Insérer dans" + dépôt + "(Client, sis, entité_name_1, entité_name_2, flag_dep, processus, flag_dep_det) Valeurs ( % S,% S,% s,% s,% s,% s,% s); ", (" CO ", qo.db_src, qo.table_src, qo.table_des, qo.check_func, qo.table_des, aucun ))) code>
J'ai fait une même erreur: Échec de définir des informations sur les dépendances: Attendant l'objet d'une chaîne, d'unicode ou d'un objet tampon
Alors je n'ai aucune idée. Vous n'avez pas donné suffisamment d'informations pour que nous déboguez cela au-delà "Voici une approche totalement ouverte à SQL-injection" avec une erreur désincarnée. Si l'erreur indique une partie particulière de la requête, vous ne l'avez pas montré.
Je donne la requête où j'ai le problème, de quelque façon que ce soit merci
Les bibliothèques SQL que j'ai utilisées vous donnent une indication où i> dans la requête il y a un problème, pas seulement "cette requête, quelque part, est faux"