🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
5 messages
5 total messages Started by Piotr Hosowicz Tue, 07 Apr 2009 07:28
Co oznacza to duże E przed stringiem? (Django/Psycopg2)
#25960
Author: Piotr Hosowicz
Date: Tue, 07 Apr 2009 07:28
28 lines
1380 bytes
Witam,

Nie mogę jakoś wygooglować pod hasłem prefix ani nic.

Mam tak:

from django.db import connection

(...)

cursor = connection.cursor()

sql = u'select (...) where fname ilike \'%%%(term)s%%\' '

cursor.execute(sql, params={"term": term})

Dostaję:

ProgrammingError at /people/search

BŁĄD:  błąd składni w lub blisko "Szukane"
LINE 1: ...t id from people_allnewdata where fname ilike '%E'Szukane'%'...

Gdzie jest błąd? Co oznacza ta duża litera E przed stringiem?

Pozdrawiam,

Piotr Hosowicz
Re: Co oznacza to duże E przed stringiem? (Django/Psycopg2)
#25961
Author: Piotr Hosowicz
Date: Tue, 07 Apr 2009 09:34
52 lines
2166 bytes
Piotr Hosowicz wrote:
> Witam,
> 
> Nie mogę jakoś wygooglować pod hasłem prefix ani nic.
> 
> Mam tak:
> 
> from django.db import connection
> 
> (...)
> 
> cursor = connection.cursor()
> 
> sql = u'select (...) where fname ilike \'%%%(term)s%%\' '
> 
> cursor.execute(sql, params={"term": term})
> 
> Dostaję:
> 
> ProgrammingError at /people/search
> 
> BŁĄD:  błąd składni w lub blisko "Szukane"
> LINE 1: ...t id from people_allnewdata where fname ilike '%E'Szukane'%'...
> 
> Gdzie jest błąd? Co oznacza ta duża litera E przed stringiem?

Odpowiem sam sobie.

1. Nie doszedłem co oznacza to E przed stringiem w komunikacie o błędzie.

2. Błąd pochodził od psycopg2.

3. Psycopg2 samo dba o dołożenie cudzysłowów, natomiast o znaki procenta 
trzeba zadbać samemu.

Tak więc mój działający kod wyglda tak:

(...)
             cursor = connection.cursor()
             sql = u'select id from people_allnewdata where ' \
                 'fname ilike %(term)s or ' \
(...)
                 'order by lname,nname,fname'
             cursor.execute(sql, params={"term": "%"+term+"%"})
             recs = cursor.fetchall()

(...)


Pozdrawiam,

Piotr Hosowicz
Re: Co oznacza to duże E przed stringiem? (Django/Psycopg2)
#25962
Author: Piotr Keplicz
Date: Tue, 07 Apr 2009 09:43
6 lines
1111 bytes
Piotr Hosowicz:
> 1. Nie doszedłem co oznacza to E przed stringiem w komunikacie o błędzie.

E'...' to binarne napisy w PostgreSQL.

.pk.
Re: Co oznacza to duże E przed stringiem? (Django/Psycopg2)
#25963
Author: Piotr Hosowicz
Date: Tue, 07 Apr 2009 13:57
11 lines
1228 bytes
Piotr Keplicz wrote:
> Piotr Hosowicz:
>> 1. Nie doszedłem co oznacza to E przed stringiem w komunikacie o błędzie.
> 
> E'...' to binarne napisy w PostgreSQL.

Aha, dzięki.

Pozdrawiam,

Piotr Hosowicz
Re: Co oznacza to duże E przed stringiem? (Django/Psycopg2)
#25964
Author: szymon
Date: Tue, 07 Apr 2009 14:51
15 lines
1430 bytes
Dnia 2009-04-07, wto o godzinie 11:43 +0200, Piotr Keplicz pisze:
> Piotr Hosowicz:
> > 1. Nie doszedłem co oznacza to E przed stringiem w komunikacie o błędzie.
> 
> E'...' to binarne napisy w PostgreSQL.
> 
> .pk.
> 

E'...' to nie jest napis binarny... to określenie, że w stringu są
escape'owane znaczki. W napisach binarnych mogą być znaczki takie jak 
\\000 i dlatego musi być tam E'...', ale takie samo E' musi być np.
przed wyrażeniami regularnymi w stylu: x ~ E'alamakota\n'
-- 
szymon
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads