Bonjour
Voici une question donc je ne retrouve pas la réponse .
Le fait appel à une base POSTGRESQL via les commandes psycopg2.
Je me connecte à la base , fait des insertion simple ... etc
mais voila je comment lorsque j' insére une seule ligne dans la table, de récuperer le numéro de séquence généré par la clause DEFAULT retouner par cette INSERT
soit cette insert
INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets')
RETURNING did;
soit cette version ou l'index est normalement autogénérer par la séquece affecté à la table
INSERT INTO distributors ( dname) VALUES ( 'XYZ Widgets')
RETURNING did;
or je ne retrouve pas d'exemple
exemple de table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE public.distributors ( did bigserial NOT NULL, dname VARCHAR(150) NOT NULL, CONSTRAINT did_pk PRIMARY KEY (did) ) WITH ( OIDS=FALSE ) ;
La table génére donc la séquence pae defaut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 -- DROP SEQUENCE public.distributors_did_seq; CREATE SEQUENCE public.distributors_did_seq INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807;
l'insertion ce réalise donc
Comment puis-je recuperer la valeur de did génére par RETURNING en POSTGRESSQL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import psycopg2 # Accés PostgreSQL import psycopg2.extras # Goodies PostgreSQL from config import Config if __name__ == '__main__': conn = psycopg2.connect(host="localhost",database="suppliers", user="postgres", password="postgres") cur = conn.cursor() sql ='''INSERT INTO public.distributors (dname) VALUES ( %s ) RETURNING did; ''' value1 ="CAS12" cur.execute(sql, (value1)) conn.commit() conn.close()
Partager