From: | Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com> |
---|---|
To: | "Hefferon, James S(dot)" <jhefferon(at)smcvt(dot)edu> |
Cc: | "psycopg(at)postgresql(dot)org" <psycopg(at)postgresql(dot)org> |
Subject: | Re: Getting adaped output from unicode text, without a connection |
Date: | 2013-07-21 20:08:20 |
Message-ID: | CA+mi_8ZhWiMsuC5uqGdCu8m+HpHzWrN40BnDYOJs1SbBG3S4rg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | psycopg |
On Sun, Jul 21, 2013 at 7:56 PM, Hefferon, James S. <jhefferon(at)smcvt(dot)edu> wrote:
> Hello,
>
> I need to write some static .sql files (just as an explanation, it is startup code for Django). Some of the strings are non-ascii. I'm stumped about how to get utf-8 instead of latin-1 in the file.
>
> I'm generating the .sql as strings, without a connection. I found a prior message on this list that suggested what to do (1) and came up with this routine.
>
> def todb(s):
> psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
> psycopg2.extensions.register_type(psycopg2.extensions.DECIMAL)
> psycopg2.extensions.register_type(psycopg2.extensions.FLOAT)
> adapted = psycopg2.extensions.adapt(s)
> return adapted.getquoted()
>
> But it encodes in latin-1. I understand from the docs that I need to get a connection and set the .encoding attribute, but I can't see how to get a connection instance without a db handy. For instance,
>
>>>> conn = psycopg2.connect(database = None)
>
> fails.
>
> I expect that I am asking a dopey question (I'm not very sure what I am doing) but I'd appreciate a pointer even if it makes me feel dumb.
No, it's not a dumb question. But I'm afraid you cannot create a
psycopg connection object without a real database connection.
If you had a working connection you could adapt the string with:
conn.set_client_encoding('utf8')
adapted = psycopg2.extensions.adapt(s)
adapted.prepare(conn)
return adapted.getquoted()
you don't need the register_type calls above: they only control how
data from the database is converted to Python.
-- Daniele
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2013-07-21 20:39:23 | Re: Getting adaped output from unicode text, without a connection |
Previous Message | Hefferon, James S. | 2013-07-21 18:56:19 | Getting adaped output from unicode text, without a connection |