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


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()
Comment puis-je recuperer la valeur de did génére par RETURNING en POSTGRESSQL