🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27136

Re: Python i MySQL BLOB

#27136
From: Łukasz Rekucki
Date: Tue, 05 Jan 2010 15:50
47 lines
2980 bytes
On Jan 5, 4:24 pm, królewna <krole...@ee.pl> wrote:
> Witam,
>
> Chciałam sobie ostatnio zapisać obiekt w BLOBie w mysql. Więc wzięłam
> standardowo obiekt zpiklowałam i chciałam wrzucić do BLOBa przez
> następującą instrukcję:
>
> pick = cPickle.dumps("dsdasdas")
> cur.execute("INSERT INTO test VALUES(10, %s, 3);" % pick)
>
> gdzie tabela test ma kolumny:
> 1. ID - int, primary key, autoincrement, not null
> 2. dane - BLOB
> 3. liczba - INTEGER
>
> (to jest oczywiście tabela testowa, na której próbowałam to zrobić).
> Niestety gdy zostawiam to tak jak jest obecnie, to python wywala mi
> MySQLowy błąd 1064 (złe użycie słowa kluczowego) a cały traceback
> wygląda następująco:
>
> Traceback (most recent call last):
>    File "l.py", line 21, in <module>
>      cur.execute("INSERT INTO test VALUES(10, %s, 3);" % pick)
>    File "build/bdist.linux-i686/egg/MySQLdb/cursors.py", line 173, in
> execute
>    File "build/bdist.linux-i686/egg/MySQLdb/connections.py", line 36, in
> defaulterrorhandler
> _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 ''dsdasdas'\np1\n., 3)' at line 1")
>
> Czy ktoś może mi powiedzieć co robię źle? Czy do BLOBa jakoś inaczej
> wstawia się dane (nie przez serializację)?


import pickle
cur.execute("INSERT INTO test VALUES(10, %s, 3);" % pickle.dumps
("alamakota"))
# ===
cur.execute("INSERT INTO test VALUES(10, S'alamakota'\np0\n., 3);")

Może się nie znam, ale "INSERT INTO test VALUES(10,
S'alamakota'\np0\n., 3);" nie wygląda na poprawne zapytanie.

Proponuję jednak:
pick = pickle.dumps("alamakota")
cur.execute("INSERT INTO test VALUES(10, %s, 3);", (pick,))
Technical Details
Message-ID: <e40b5499-a692-4d1d-bd6d-8dd80f5ae900@c3g2000yqd.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!c3g2000yqd.googlegroups.com!not-for-mail
References: <hhvlil$cso$1@achot.icm.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!c3g2000yqd.googlegroups.com!not-for-mail
From: Łukasz Rekucki <lrekucki@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Python i MySQL BLOB
Date: Tue, 5 Jan 2010 07:50:01 -0800 (PST)
Organization: http://groups.google.com
Lines: 53
Message-ID: <e40b5499-a692-4d1d-bd6d-8dd80f5ae900@c3g2000yqd.googlegroups.com>
References: <hhvlil$cso$1@achot.icm.edu.pl>
NNTP-Posting-Host: 212.76.62.207
Mime-Version: 1.0
X-Trace: posting.google.com 1262706601 13019 127.0.0.1 (5 Jan 2010 15:50:01 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 5 Jan 2010 15:50:01 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: c3g2000yqd.googlegroups.com; posting-host=212.76.62.207;  posting-account=5fpXZwoAAADF-CUdCuJ-FpYxG8__-wRx
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US)  AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit