On Aug 13, 2009, at 6:00 PM, azrael wrote:

On 13 kol, 22:09, Philip Semanchuk <phi...@semanchuk.com> wrote:
On Aug 13, 2009, at 2:56 PM, azrael wrote:

j
[u'Tata', u'Oriovac', u'PrimorskoGoranska', u'hrvatska', u'Kuna']
len(j)
5
h = """SELECT distinct u.id_ulica, o.id_opcina, z.id_zupanija,
d.id_drzava, v.id_valuta FROM   ulica as u, opcina as o, zupanija
as z, drzava as d, valuta as v  WHERE  u.naziv = '%s' AND o.naziv
= '%s' AND z.naziv = '%s' AND d.naziv = '%s' AND v.naziv =
'%s'""" % (j)
Traceback (most recent call last):
 File "<string>", line 1, in <string>
TypeError: not enough arguments for format string

Hi azrael,
You already have an answer to your question so I won't address that. I want to point out that this is a dangerous way to build SQL statements.

For instance, what happens if someone enters a city name of L'viv?
Your SQL will break due to mismatched single quotes. This kind of code
is vulnerable to SQL injection 
attacks:http://en.wikipedia.org/wiki/SQL_injection

Parameterized SQL is safer. Googling for 'parameterized SQL Python'
should find some examples for you.

Good luck
Philip

I know Already. This is sopussed to be a small office application
connecting on a LAN mysql server with no web connection. Thank you
anyway

You're welcome. I'm glad you are aware. You're ahead of a lot of developers out there.

I encourage you to at least think about using parameterized SQL anyway because you never know when someone (maybe even you!) will copy & paste your code, or use your library without realizing that it was "internal use only". It's usually just as easy as building SQL strings anyway.

And besides, what about L'viv? =)

Good luck with whatever choice you make
Philip




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to