Skip site navigation (1) Skip section navigation (2)

insert into with a dictionary, or generally with a variable number of columns

From: Matthieu Rigal <mar(at)rapideye(dot)net>
To: psycopg(at)postgresql(dot)org
Subject: insert into with a dictionary, or generally with a variable number of columns
Date: 2012-07-03 09:59:02
Message-ID: CAH7Xw_Xxgt5A_i-xZtua2ev=DLAbYHCY3k7pNhWQNy==R8MaLg@mail.gmail.com (view raw or flat)
Thread:
Lists: psycopg
Hi folks,

To make it very simple, I want to save a dictionary to a database.

I have a function that is reading various entries and returns a dictionary.
But the content of this dictionary depends on what it was "given" before.
Sometimes I want to insert a new row with 4 attributes, sometimes with 6...

Therefore, I was hoping to be able to do something like
cursor.mogrify('''INSERT INTO processing.raster_dataset %(columns)s VALUES
%(values)s ''', {'columns' :tuple(metaValues.keys()), 'values'  :
tuple(metaValues.values())})

But it is not working, it returns all the column names in bracket and fails.

I tried specifying the columns as :
 'columns' : ', '.join(metaValues.keys())

And as you can expect, it neither works.

Does anybody has a suggestion ? I'm sorry I could not find anything on
forums or previous threads, but maybe I was missing some keywords.

For the real enthousiasts, my final request is in fact even a bit harder.
But I think to be able to make once I can do the previous step. One of the
entry of the dictionary can be a geometry, with the value being the WKT
text of a geometry. And I want to convert it to a PostGIS geometry using
the "GeometryFromText()" function when passing the value.

Best Regards,
Matthieu

-- 
RapidEye AG
Molkenmarkt 30
14776 Brandenburg an der Havel
Germany
 
Follow us on Twitter! www.twitter.com/rapideye_global
 
Head Office/Sitz der Gesellschaft: Brandenburg an der Havel
Management Board/Vorstand: Ryan Johnson
Chairman of Supervisory Board/Vorsitzender des Aufsichtsrates: Robert 
Johnson
Commercial Register/Handelsregister Potsdam HRB 24742 P
Tax Number/Steuernummer: 048/100/00320
VAT-Ident-Number/Ust.-ID: DE 815303842
DIN EN ISO 9001 certified
 

Responses

psycopg by date

Next:From: Adrian KlaverDate: 2012-07-03 14:34:41
Subject: Re: insert into with a dictionary, or generally with a variable number of columns
Previous:From: Daniele VarrazzoDate: 2012-07-03 01:25:49
Subject: Re: Change in datetime type casting

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group