2010-03-31 5 views
1
query = "SELECT * FROM mytable WHERE time=%s", (mytime) 

Actuellement, je "fais, mais je veux diviser en 2 cordes (donc je peux les faire séparément)Comment concat une chaîne en Python

cursor.execute("SELECT * FROM mytable WHERE time=%s",(mytime)) 

Ensuite, je veux . ajouter une limite% s à elle Comment puis-je faire cela sans déconner le% s dans mytime

Edit:? Je veux concat query2, qui a "LIMIT% s,% s"

+0

Pouvez-vous également publier le code que vous utilisez pour exécuter la requête? –

+9

J'aime l'injection SQL. –

+0

Où est l'injection SQL? – Gabe

Répondre

1
cxn.execute("SELECT * FROM mytable WHERE time=%%s LIMIT %d" % (mylimit,), mytime) 

Ou:

cxn.execute("SELECT * FROM mytable WHERE time=%s" + (" LIMIT %d" % (mylimit,)), mytime) 
3

Se méfier de l'injection SQL, vous pouvez composer dynamiquement votre requête as Ignacio suggests.

>>> qry = 'SELECT t.mycol FROM mytable t WHERE t.mycol = %%s %s' % 'LIMIT %s,%s' 

Vous demandez:

Comment puis-je faire cela sans chambouler % s en mytime?

Notez que vous évitez le premier %s avec un % supplémentaire.
Cela vous donne cette chaîne (qui bien sûr semble belle jusqu'à la DB-API est concerné):

>>> qry 
'SELECT * FROM mytable t WHERE t.mycol = %s LIMIT %s,%s' 

passe ensuite cette chaîne et vos paramètres à la méthode execute():

curs.execute(qry, (mytime,1,2,)) 

HTH

Questions connexes