2009-09-04 13 views
0

Quelqu'un peut-il me montrer la syntaxe pour insérer un tuple python/liste dans une base de données mysql? Je dois aussi savoir s'il est possible pour l'utilisateur de passer certaines lignes sans insérer quoi que ce soit ... par exemple: fonction retourne ce tuple:insérer un tuple dans un db mysql

return job(jcardnum, jreg, jcarddate, jcardtime, jcardserve, jdeliver) 

Supposons que l'utilisateur na pas entrer quoi que ce soit dans jreg serait python lui-même entrez null dans la ligne associée dans la base de données ou est-ce que j'aurais des problèmes?

+1

Le travail n'est pas un tuple, c'est une fonction. Cette question a trop peu d'informations pour donner une réponse à. – Omnifarious

Répondre

6

Comme le dit un commentaire, la partie job(...) est un appel de fonction (ou de classe) - tout ce qui est renvoyé par cet appel est également renvoyé par cette instruction return.

Supposons que c'est un tuple. Que se passe-t-il si "l'utilisateur n'a entré rien dans jreg" - alors, en fonction du code que vous ne nous montrez pas, cela pourrait être une erreur d'exécution (nom jreg étant indéfini), une chaîne vide ou autre initiale valeur par défaut jamais modifiée, ou None; dans ce dernier cas, cela finirait bien par devenir un NULL dans le DB (si acceptable par le schéma DB, bien sûr - sinon, le DB rejetterait la tentative d'insertion).

Une fois que vous avez enfin un tuple correcte et appropriée T que vous souhaitez insérer,

`mycursor.execute('INSERT INTO sometable VALUES(?, ?, ?, ?, ?, ?)', T) 

va être proche de la syntaxe que vous voulez - si T comprend six (et sometable a six colonnes, bien sûr). Chaque ? est un espace réservé et est remplacé par l'élément correspondant. mycursor devra être une instance de Cursor, vraisemblablement obtenue par un appel antérieur à myconnection.cursormyconnection est une instance de Connection, construite par l'appel approprié à connect à partir du module DB API que vous utilisez avec les bons argumentrs. Si vous nous montrez environ 100 fois plus de code et de schémas de base de données et que vous nous dites exactement ce que vous essayez d'accomplir, nous pourrions, collectivement, être beaucoup plus utiles et spécifiques - mais sur la base de la sous-section epsilon quantité d'informations que vous fournissez est à peu près autant que nous, collectivement parlant, peut offrir ;-).

+1

+ 1 pour une réponse étonnamment complète à une question partiellement posée et surtout devinée. –

+0

ouais! très bonne réponse! :) –

0

Peut-être, cursor.executemany est ce dont vous avez besoin?

Supposons que l'utilisateur na pas entrer quoi que ce soit dans jreg serait lui-même python entrer nulle pour la ligne liée à la DB ou ce que je courir pour des problèmes?

Je pense que vous devriez juste essayer, vous voyez probablement l'avertissement ou l'erreur si NULL n'est pas autorisé.

Questions connexes