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

Поиск
Список
Период
Сортировка
От Octavi Fors
Тема how to insert with a single cur.execute()/SQL command in 3 tables?
Дата
Msg-id CAJEYUR9Q_JP8vCCS50KUz=dBN=vi14yqjt50YdaVCj6YXs4SDA@mail.gmail.com
обсуждение исходный текст
Ответы Re: how to insert with a single cur.execute()/SQL command in 3 tables?  (Adrian Klaver <adrian.klaver@aklaver.com>)
Список 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
)


В списке psycopg по дате отправления:

Предыдущее
От: Daniele Varrazzo
Дата:
Сообщение: Psycopg 2.6 and 2.5.5 released
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: how to insert with a single cur.execute()/SQL command in 3 tables?