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
)