how to insert with a single cur.execute()/SQL command in 3 tables?

From: Octavi Fors <octavi(at)live(dot)unc(dot)edu>
To: psycopg(at)postgresql(dot)org
Subject: how to insert with a single cur.execute()/SQL command in 3 tables?
Date: 2015-02-12 20:06:01
Message-ID: CAJEYUR9Q_JP8vCCS50KUz=dBN=vi14yqjt50YdaVCj6YXs4SDA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: psycopg

Hello psycopg gurus,

my question might not be specific for psycopg mailing list, but since I'm
interfacing PostgreSQL server with python.psycopg module, I thought it'd be
a good place to ask.

I have the 3 below tables created in a postgres database.
As you see sourcecat has a <fk> linked to image, and image another <fk>
linked to filename.

I'm trying to populate these 3 tables using python.psycopg module, since I
have all the data stored in FITS binary files, and I want to have such data
well formalized in a relational db such as postgres.

Assuming I have all rows from these 3 tables stored in numpy arrays, is
there any way to insert them in a single cur.execute() command?

If a single cur.execute()/SQL command is not possible, which would be the
commands sequence?

Thanks in advance,

Octavi.

CREATE TABLE filename
(
fn_id bigserial NOT NULL, -- Primary key
fn_pathname character varying(90),
fn_origname character varying(70),
CONSTRAINT pk_fn_id PRIMARY KEY (fn_id)
)

CREATE TABLE image
(
img_id bigserial NOT NULL, -- Primary key
img_nameid bigint NOT NULL,
img_naxis1 smallint NOT NULL,
img_naxis2 smallint NOT NULL,
img_bitpix smallint NOT NULL,
img_bscale smallint NOT NULL DEFAULT 1,
img_bzero smallint NOT NULL DEFAULT 0,
CONSTRAINT pk_img_id PRIMARY KEY (img_id),
CONSTRAINT fk_img_nameid FOREIGN KEY (img_nameid)
REFERENCES filename (fn_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)

CREATE TABLE sourcecat
(
src_id integer NOT NULL DEFAULT nextval('srccat_src_id_seq'::regclass),
src_imgid bigint NOT NULL DEFAULT
nextval('srccat_src_imgid_seq'::regclass),
src_flux_auto real,
src_fluxerr_auto real,
src_xwin_image real,
src_ywin_image real,
src_alphawin_j2000 double precision,
src_deltawin_j2000 double precision,
src_elongation real,
src_flags character varying(3),
CONSTRAINT pk_src_imgid_id PRIMARY KEY (src_imgid, src_id),
CONSTRAINT fk_src_imgid FOREIGN KEY (src_imgid)
REFERENCES image (img_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)

Responses

Browse psycopg by date

  From Date Subject
Next Message Adrian Klaver 2015-02-12 20:30:43 Re: how to insert with a single cur.execute()/SQL command in 3 tables?
Previous Message Daniele Varrazzo 2015-02-09 10:40:51 Psycopg 2.6 and 2.5.5 released