Siasztok,
egy php-s kódomat alakítom át python-ra. Az sql parancsokat előre össze szoktam állítani.
Most így próbáltam:
sql="UPDATE job \
set type='%s' , \
completed_savetime='%s', \
completion_status='%s%, \
data_class='%s', \
data_set_size='%s', \
data_size='%s', \
end_time='%s', \
estimated_bytes='%s', \
file_count='%s', \
files_totals='%s', \
host='%s', \
job_state='%s', \
level='%s', \
name='%s', \
nw_client_name_id='%s', \
processed_bytes='%s', \
saveset_name='%s', \
saveset_time='%s', \
ssid='%s', \
start_time='%s', \
vcenter_hostname='%s', \
vm_guest_os='%s', \
vm_name='%s', \
vm_uuid='%s', \
where job_id=%s and torolve=0" % (\
tipus,completed_savetime,completion_status,data_class,
data_set_size,data_size,end_time,estimated_bytes,
file_count,files_totals,host,job_state,level,name,
nw_client_name_id,processed_bytes,saveset_name,saveset_time,
ssid,start_time,vcenter_hostname,vm_guest_os,vm_name,
vm_uuid, job_id, kornyezet)
Az utolsó sorra ezt írja:
ValueError: unsupported format character ',' (0x2c) at index 134
Nem értem, hogy hol a hiba. Több másik lekérdezésem is van, ugyan ilyen tördeléssel.
- 509 megtekintés
Hozzászólások
Nem beszélek pythont, de ez ránézésre érdekes:
completion_status='%s%, \
(mert hogy mindenhol máshol '%s' van
És az alábbi sor is érdekes:
where job_id=%s and torolve=0" % (\
De egyébként az index 134 sokat segít.
Ha nem válaszolnék kommentben, hát küldj privátot!
- A hozzászóláshoz be kell jelentkezni
Köszönöm, a % jelet cseréltem ' jelre. Megoldódott. Köszönöm :)
- A hozzászóláshoz be kell jelentkezni
Off: a szerkesztőd nem jelezte valami színnel, hogy egy aposztróf nincs lezárva?
- A hozzászóláshoz be kell jelentkezni
itt van a kutya elásva :)
- A hozzászóláshoz be kell jelentkezni
Nem értek Pythonhoz, nem tudom milyen adatbázist használsz és hogyan hívod, de azt tudom, hogy rosszul csinálod. Kérlek nézz utána hogyan kell az általad használt megoldással paraméterezett lekérdezéseket futtatni. Lásd: https://stackoverflow.com/questions/902408/how-to-use-variables-in-sql-…
- A hozzászóláshoz be kell jelentkezni
Bobby Tables... https://xkcd.com/327/
- A hozzászóláshoz be kell jelentkezni
Én azt hittem, az SQL injection már olyan régi, hogy mindenki ismeri, és kihalt.
Szerintem a kérdezőnek legalább ezt el kéne olvasni, mielőtt az egész kódját átalakítja ilyen sechole-sinkre:
- A hozzászóláshoz be kell jelentkezni
Az SQL injection olyan regi, hogy mar mindenki elfelejtette, hogy vedekezni kellene ellene. Mint a kanyaro.
- A hozzászóláshoz be kell jelentkezni
> vm_uuid='%s', \
> where job_id=%s ..
Az a rész is gyanús ahol vessző kerül a where elé.
Szerk: öröm lehet ilyen kódot karbantartani.
- A hozzászóláshoz be kell jelentkezni
Ilyen sok paramétert tartalmazó stringnél érdemes a format metódust használni nevesített értékekkel.
- A hozzászóláshoz be kell jelentkezni
Akkor már (ha nem kell régebbi python) inkább f stringet.
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Köszönöm a tanácsokat, újra gondoltam több mindent.
Át is írtam több elgondolást.
- A hozzászóláshoz be kell jelentkezni