PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Python » Rêquete sql (postgis) via phyton » 01/10/2014 13:57:46

aurelie.guegan.15
Réponses : 0

Bonjour,

Je travail sur postgresql 9.3 et python 2.7.
J'ai une application/interface en python qui insert des données dans ma base de données via un fichier excel et d'autres informations directement donnés par l'utilisateur, en particulier un code 'srid'.

Je travail sur la création de points (x,y,z) via postgis. Les colonnes où les points sont créé sont de ce type : geometry('POINT',srid). Le srid est un chiffre spécifique à la colonne et référe à un système de coordonnée. Pour faire simple j'ai besoin d'une table par srid.

j'auto génère mes tables de types geometry comme ceci :


Code :

Sélectionner tout - Visualiser dans une fenêtre à part

 CREATE OR REPLACE FUNCTION add_colsrid()
  RETURNS void AS
$BODY$
    DECLARE 
          srid integer;
          requete text;
    BEGIN
        SELECT srid_py INTO srid FROM srid WHERE NOT EXISTS ( SELECT * FROM project WHERE project.proj_srid = srid.srid_py) ;
        RAISE notice 'verif (%)', srid ;
        IF srid IS NOT NULL THEN
              requete := 'ALTER TABLE point ADD COLUMN' || srid || ' geometry;';
          EXECUTE requete;
        END IF;
    END;
  $BODY$
  LANGUAGE plpgsql VOLATILE  

Pour résultat j'ai une nouvelle colonne dans ma table point qui porte le nom columnXXX où XXX est le code srid (srid ='1420' alors le nom de la colonne est colunm1420).
Le soucie est que la colonne est au format geometry et non geometry('POINT',srid). Je ne peut pas préciser le srid directement dans ce code car il est de type varchar pour pouvoir créer le nom de la colonne et que dans geometry('POINT',srid) il est de type int.

Je doit donc modifier le type de la colonne en précisant le srid à utiliser. j'ai eu l'idée de passer par mon interface python pour cela. J'ai essayé :


Code :

"ALTER TABLE point ALTER COLUMN column||%s|| TYPE geometry('POINT',SELECT srid_conv FROM srid WHERE srid_projnum = %s)USING column||%s||::geometry")%(srid,projNum,srid)

Explication :
srid est de type varchar et est directement fourni par le code python. column||%s|| est sencé donnée colunm120 par exemple si le srid ='120'.
SELECT srid_int FROM srid WHERE srid_projnum = %s est sencée retournée le srid en chiffre, qui est stockée dans la base de donnée dans le champ srid_int de la table srid.

Le problème est que cette syntaxe ne fonctionne pas et que je n'ai qucune idée de ce qui pourrait fonctionner. Je débute dans les deux languages, j'ai donc des soucies de syntaxe et aussi d'optimisation du code. Je prend toute remarque pour optimiser mon code car il est relativement complexe pour le moment et je pense qu'il y a des choses plus stables et plus simple qui existe.

Merci d'avance

#2 Re : Général » Permission denied avec SUPERUSER » 16/09/2014 08:00:50

En effet si je run entant que administrateur, je peux importer mes fichiers. Mais je ne peux pas utiliser mon interface python.
MErci pour les conseils

#3 Re : Général » Permission denied avec SUPERUSER » 15/09/2014 14:42:14

La réponse est peu-être un peu trop rapide pour moi.
Lorsque vous parlez de session ? C'est une session windows ?
Lorsque vous parlew de explorateur c'est une fenetre de recherche de fichier ?
Comment faire pour être utilisateur postgres et non moi même lors de l'ouverture de ceux-ci ?
Cordialement,

#4 Re : Général » Permission denied avec SUPERUSER » 15/09/2014 14:19:09

Lorsque je vais dans les propriétés du dossier GL,j'ai ceci pour postgres :
GL Properties permissions for postgres :
    Full control : Allow icone check noir
    Modify: Allow icone check noir
    Read and execute : Allow icone check grise
    List folder contents Allow icone check grise
    Read : Allow icone check grise
    Whrite : Allow icone check noire
    Special permissions : --

Si je vais dans les paramètres avancés j'ai pour postgres 2 choses :
Ligne 1 :
    Type : Allow
    Name : Postgres (HHBD40428\postgres)
    Permission : Full control
    Inherited From : <not inherited>
    Apply to : This folder, subfolders and files
Ligne 2 :
    Type : Allow
    Name : Postgres (HHBD40428\postgres)
    Permission : REad and execute
    Inherited From : C:\Users\AUGU\Documents\
    Apply to : This folder, subfolders and files

#5 Re : Général » Permission denied avec SUPERUSER » 15/09/2014 13:41:35

Bonjour ruizsebastien,
Si je vais dans les propriétés onglet securité de mon fichier STG_Ahrensboek.csv,j'ai ceci :

Object nane : C:\Users\AUGU\Documents\GL\DATA\STG_Ahrensboek.csv

USERS:
     SYSTEM :
     postgres(HHBD404281\postgres) : Le code est le nom du PC
     Guegan,Aurélie  : Moi même
     Administrators(HHBD404281\Administrators)

Permissions for postgres :
     Full control : Allow
     Modify Allow
     Read and execute : allow
     Read : Allow
     Write : Allow
     Special permissions : --

Je ne vois vraimement pas ou est mon problème de permission.

#6 Re : Général » Permission denied avec SUPERUSER » 15/09/2014 11:07:03

Ma question n'était peu-être pas très claire, désolé. En effet le message dit clairement que je peut pas me connecter entant que utilisateur postgresql, je l'ai bien compris.  Je reformule :

Ma permière question est pourquoi cela alors que dans les propriétés de mes fichiers à importer postgres à tous les droits?
Ma seconde question est comment faire pour pouvoir lire mes fichiers et importer mes données ?


Je suis en allemagne postgres est donc en allemand. Le message d'erreur est le suivant, et dit simplement qu'il ne peut pas lire le fichier car la permission est refusé:

FEHLER: konnte Datei „C:/Users/AUGU/Documents/GL/DATA/STG_Ahrensboek.csv“ nicht zum Lesen öffnen: Permission denied
SQL Status:42501

Merci d'avance pour tous les conseils et remarques
Cordialement,

Aurélie

#7 Général » Permission denied avec SUPERUSER » 15/09/2014 10:24:50

aurelie.guegan.15
Réponses : 10

Bonjour,

Je travaille sur la création d'une base de donnée PostGIS.

Lorsque je veux remplir une table avec COPY FROM, j'ai une erreur SQL Status 4201 qui me dit que je n'ai pas les permissions nécessaires et/ou suffisantes. Pourtant, le propriétaire de ma table est postgresql donc superuser et j'ai bien modifié dans les propriétés de mon fichier (et même de tout les dossiers du chemin d'accès) les droits d'accès pour l'utilisateur postgresql.

J'ai voulu ruser et remplir mes tables via un script en python en ouvrant mon excel et remplissant ma table ensuite avec un INSERT INTO, mais là aussi j'ai rencontré d'autres problèmes et cette solution n'est vraiment pas optimal.

Sur mon PC personnel, j'ai fait les mêmes manipulations et je ne n'ai pas d'erreur, alors que sur le PC du travail, j'ai cette erreur. Une idée sur comment régler ce problème ?

Pied de page des forums

Propulsé par FluxBB