Szóval Pythonban MySQLdb használatával mi a hiba ebben az SQL parancsban. Maga a parancs az SQL változóba kerül.
SQL="""insert into szallitolevel (Sorszam, Oldalszam, Datum, Idopont, PartnerNev, PartnerCim, PartnerAdoszam, \
PartnerBankszamla, Rendszam, FizMod, Mintavetel, BeepitesHelye, Megjegyzes, Homerseklet) values \
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""" % \
(xSorszam, xOldalszam, xDatum, xIdopont, xPartnerNev, xPartnerCim, xPartnerAdoszam, \
xPartnerBankszamla, xRendszam, xFizMod, xMintavetel, xBeepitesHelye, xMegjegyzes, xHomerseklet)
Már a szemem kifolyik annyira figyelem, de nem látom meg a hibát.
- 1335 megtekintés
Hozzászólások
Ezek az ertekek mind szamok(intek)? Ha nem, akkor azokat rakd
'
koze.
- A hozzászóláshoz be kell jelentkezni
Így van! Az aposztrófok hiányoztak.
Köszi.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox
- A hozzászóláshoz be kell jelentkezni
Esetleg try block-ban es kiiratva a kivetelt?
- A hozzászóláshoz be kell jelentkezni
Ez így eléggé SQL-injection gyanús. Mi van, ha van egy aposztróf mondjuk a címben?
- A hozzászóláshoz be kell jelentkezni
A PEP-249 definialja, hogy a cursor.execute-t tudd meghivni igy is:
cursor.execute("insert into szallitolevel (Sorszam, Oldalszam, Datum, Idopont, PartnerNev, PartnerCim,
PartnerAdoszam, PartnerBankszamla, Rendszam, FizMod, Mintavetel, BeepitesHelye, Megjegyzes, Homerseklet)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
(xSorszam, xOldalszam, xDatum, xIdopont, xPartnerNev, xPartnerCim, xPartnerAdoszam,
xPartnerBankszamla, xRendszam, xFizMod, xMintavetel, xBeepitesHelye, xMegjegyzes, xHomerseklet)
)
Ami kiszuri az SQL injectionoket is, es automatikusan beformazza ugy, hogy megegye a db driver (pl. aposztrofok). Szoval ha mar nem hasznalsz valami fasza ORM layert (mint pl. az SQLAlchemy), legalabb ne kokanyolj.
- A hozzászóláshoz be kell jelentkezni
Időközben kipróbáltam a fentieket, de ezzel az üzenettel válaszol:
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
A sortörések végére azért a \ jelet ki kellett tenni, mert különben be sem tölti a programot.
Egyelőre, hogy haladjak is közben, marad a "('%s', '%s', ...) %" (valtozo1, valtozo2, ...) változat.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox
- A hozzászóláshoz be kell jelentkezni
Nézd meg az sqlalchemy-t! Ha nem is akarod használni az ORM részét (bár miért ne), az SQL Expression szint is nagyban megkönnyítheti az életed.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a javaslatokat. Meg fogom nézni.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox
- A hozzászóláshoz be kell jelentkezni