2010-08-05 8 views
0

J'écris un programme qui interroge d'abord mySQL, puis trie ces données. Je veux être en mesure d'avoir un type d'utilisateur "python nom_programme.py" mySQL_query "et que le programme insère" mySQL_query "dans la requête au début du programme. Le problème que je rencontre est que la commande sys.argv convertit l'entrée en une chaîne, que mySQL rejette ensuite. J'ai essayé quelques choses pour convertir le sys.argv en un nom au lieu d'une chaîne, mais ils n'ont pas été couronnés de succès. Des idées?incorporant un sys.argv dans une requête mySQL en python

+0

Qu'est-ce que mySQL attend de python? Dans tout ce que j'ai utilisé, mySQL * voulait * une chaîne de caractères. – zebediah49

+2

Comment une requête MySQL peut-elle être autre chose qu'une chaîne de caractères? Et que voulez-vous dire par "convertir sys.argv en un nom"? Python n'a rien appelé un nom. Peut-être si vous avez inclus le code réel avec des messages d'erreur réels? –

+0

La requête est qb = "SELECT DISTINCT q19_scan.array_orientation_equatorial, q19_scan.run_id, q19_scan.run_subid, q19_scan.patch_day_number, sys.argv [2] à partir de q19_typeb NATURAL JOIN q19_scan jointure naturelle q19_timestream NATURAL JOIN q19_weather jointure naturelle q19_ces_usable WHERE" et l'erreur est (1064, "Vous avez une erreur dans votre syntaxe SQL, consultez le manuel correspondant à votre version du serveur MySQL pour la syntaxe à utiliser près de 'sys.argv [2] FROM q19_typeb NATURAL JOIN q19_scan NATURAL JOIN q19_timestream NATURAL JOIN ... 'à la ligne 1 ") – Tob

Répondre

1

Votre code doit aimer quelque chose comme ceci:

qb="SELECT DISTINCT q19_scan.array_orientation_equatorial, q19_scan.run_id, q19_scan.run_subid, q19_scan.patch_day_number, %s FROM q19_typeb NATURAL JOIN q19_scan NATURAL JOIN q19_timestream NATURAL JOIN q19_weather NATURAL JOIN q19_ces_usable WHERE " % sys.argv[2] 

J'ai remplacé sys.argv [2] dans votre requête avec% s, puis appliquer le formatage opérateur sur cette chaîne avec le deuxième opérandes étant sys. argv [2]. Vous pouvez en savoir plus sur l'opérateur formatting de python dans la documentation, ou même utiliser des fonctions de formatage plus récentes: