Bonjour tout le monde , je viens de créer ma base de données sur PgAdmin , et je veux l'acceder depuis un code python , comment faire ? j'ai deja le module "Psycopg2" .. merci
Bonjour tout le monde , je viens de créer ma base de données sur PgAdmin , et je veux l'acceder depuis un code python , comment faire ? j'ai deja le module "Psycopg2" .. merci
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 import psycopg2 # on crée la connection connect=psycopg2.connect("dbname='ta_base' user='nom_user' host=adresse_ip password='mot _passe'") # on crée un curseur cur = connect.cursor() #execution requete cur.execute("select * from ma_table") # on recupère le resultat avec fetchone() ou fetchall() #exemple onécrit les enregistrements for enr in cur.fetcall(): print enr # si tu fais un insert ou update il faut mettre l'instruction commit pour valider cur.execute("update ma_table set...") cur.commit() # pour fermer connection connect.close()
Bonjour xavier-Pierre , merci pour ta réponse , j'ai enfin pu connecté l'interface Tkinter avec ma base PostgreSQL , j'ai mis ce code :
ça marche bien , sauf que dans la fonction afficher() , quand j'insere les données dans la Treeview j'ai le message d'erreur suivant :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 #! /usr/bin/python #-*- coding:Utf-8-*- from Tkinter import * import ttk import psycopg2 def center(window): sw = window.winfo_screenwidth() sh = window.winfo_screenheight() rw = window.winfo_reqwidth() rh = window.winfo_reqheight() xc = (sw - rw) / 2 yc = (sh -rh) / 2 window.geometry("+%d+%d" % (xc, yc)) window.deiconify() def afficher() : connect() cur = conn.cursor() cur.execute("""SELECT * from firstbasetable""") rows = cur.fetchall() if rows : for z in rows: print z[1] + ' : ' + str(z[2]) tv.insert("","end", values=(z[1], z[2], z[3])) def connect() : global conn conn = psycopg2.connect("host='localhost' dbname='firstbase' user='postgres' password='pesbakpostgresql'") fenetre=Tk() fenetre.geometry("500x400") fenetre.title(' Test Data') firstnamevar = StringVar() lastnamevar = StringVar() Phonevar = IntVar() f1 = Frame(fenetre, bg="#290080", width=500, height=500) f1.pack( fill=X, expand=0) lab1 = Label(fenetre, text="Voila la table testtable de la base testbase" , bg = "#290080", fg = "white" ) lab1.place ( x=100 , y=15 ) lab1 = Label(fenetre, text="Prénom" , bg = "#290080", fg = "white" ) lab1.place ( x=30 , y=100 ) lab1 = Label(fenetre, text="Nom" , bg = "#290080", fg = "white" ) lab1.place ( x=30 , y=125) lab1 = Label(fenetre, text="Phone" , bg = "#290080", fg = "white" ) lab1.place ( x=30 , y=150) firstname_entry = ttk.Entry(fenetre, width=15, textvariable=firstnamevar) firstname_entry.place (x = 100 , y = 100 ) lastname_entry = ttk.Entry(fenetre, width=15, textvariable=lastnamevar) lastname_entry.place (x = 100 , y = 125 ) Phone_entry = ttk.Entry(fenetre, width=15, textvariable=Phonevar) Phone_entry.place (x = 100 , y = 150 ) Phonevar.set("") scrollbar = Scrollbar(fenetre) scrollbar.place (x = 412 , y = 301 ) tv = ttk.Treeview(fenetre, show='headings', height =3, yscrollcommand=scrollbar.set) tv["columns"]=("col1","col2","col3") tv.column("col1",width=100,anchor="center", stretch = True, minwidth = 50) tv.column("col2",width=100,anchor="center") tv.column("col3",width=110,anchor="center") tv.heading("col1",text="Prénom") tv.heading("col2",text="Nom") tv.heading("col3",text="Phone number") tv.place( x = 100 , y = 250 ) scrollbar.config(command=tv.yview) afficher = Button(fenetre, text = "Afficher" , command = afficher) afficher.place( x=315, y=80 ) inserer = Button(fenetre, text = "Inserer" , command = insere) inserer.place( x=315, y=110 ) modifier = Button(fenetre, text = "Modifier" ) #, command = modif) modifier.place( x=315, y=140 ) supprimer = Button(fenetre, text = "Supprimer" , command = afficheselected) supprimer.place( x=315, y=170 ) Quitter = Button(fenetre, text = "Quitter" , command = fenetre.quit) Quitter.place( x=200, y=350 ) fenetre.after(0,center,fenetre) fenetre.mainloop()
Et si j'affiche les données sur un terminale c'est bien : car j'ai dans la bas Prénom1 , Prénom2 dans un champ "Prenom" de la table "firstbasetable " , je pense que le probleme vient du manque des deux commandes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
qui doivent etre dans la définition de la connexion comme dans mysql , mais je sais pas comment les placer avec psycopg2 , sur MySQL c'est comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part charset = "utf8" , use_unicode=True
J'arrive pas à en sortir encore ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part db = MySQLdb.connect(host = "localhost", user = "root", passwd = "firstmysql",db = "testbase",charset = "utf8" , use_unicode=True)
essaie avant de faire l'insert de rajouter l'instruction
il faut remplacer le_codage par le codage ultiliser dans ton appli python
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... cur.execute("set client_encoding to 'le_codage'; SELECT * from firstbasetable")
Mercii xavier-Pierre pour ta réponse, je vais essayer tout de suite et reviens te dire le resultat
![]()
j'ai essayé le code mais ça affiche toujours le message :
j'ai remplacé 'le_code' par ' UTF8' , 'Utf-8' , 'UTF-8' , ... , mais ça ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)![]()
Partager