Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python + Mysql merkkiongelma

Cartter [10.11.2008 15:16:16]

#

Yritän lisätä seuraavalla koodilla elokuvan nimeä ja imdb linkkiä tietokantaan.

cursor.execute("INSERT INTO moviedb (name, imdb) VALUES ('%s', '%s')" % (name, imdb))

Ongelmia tuottaa nimen "caveman's valentine" lisääminen, koska nimessä on tuo '-merkki. Alla virheilmoitus.

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Valentine, The', '2001', '30.05.03', '1', 'http://www.imdb.com/find?q=Caveman'' at line 1")

Kuinka tuo ongelma ratkaistaan yksinkertaisimmillaan?

Mod. lisäsi kooditagit

Metabolix [10.11.2008 16:32:27]

#

Kotitehtävä: mitä tapahtuu, jos lisäät seuraavan nimen:

', ''); DROP TABLE moviedb

Avainsana on escape. En tunne Pythonin MySQL-kirjastoja, mutta Google pulautti funktion MySQLdb.escape_string. Hakusanoina voit kokeilla sellaisia kuin MySQL, Python ja escape.

pipo [10.11.2008 17:13:38]

#

Aina kun lisäät elokuvan tietokantaasi, lähetät sen nimen funktioon joka tarkastelee sisältääkö merkkijono yhtään heittomerkkiä ja jos sisältää niin laittaa siihen eteen kenoviivan, jolloin se heittomerkki ohitetaan. Sitten se funktio palauttaa uuden merkkijonon (caveman\'s valentine), mikä lisätään sinne tietokantaan.

Cartter [10.11.2008 19:08:00]

#

Kiitoksia. Escape tosiaan on avainsana MySQLdb vanhempien versioiden kohdalla. Uudemmille versioille löyty hyvin simppeli ratkaisu:
http://forums.devshed.com/python-programming-11/storing-blob-in-mysql-db-116913.html

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta