2016-03-02 1 views
0

J'ai une colonne dans postgresql définie comme REAL [], et lorsque j'essaie d'insérer une valeur dans la colonne, cela provoque une erreur.Comment insérer un type Python NUMERIC dans la colonne de type REAL postgresql

La valeur est un tableau de nombres, comme ceci: [23.4, -45, 7895]

Et l'erreur résultant est: operator does not exist: real[] = numeric[]

Que dois-je faire?

+0

IMHO Il est préférable d'utiliser le type 'numeric' dans la table postgres. Les types de points flottants sont rarement utiles. –

Répondre

0

Je soupçonne fortement ce n'est pas la partie d'insertion de votre requête qui est le problème:

db=# create temp table fnord (foo numeric[]); 
db=# insert into fnord values ('{23.4, -45, 7895}'::real[]); 
db=# insert into fnord values ('{23.4, -45, 7895}'::real[]); 
db=# select '{23.4, -45, 7895}'::numeric[] = '{12, 12, 12}'::real[]; 
ERROR: operator does not exist: numeric[] = real[] 
LINE 1: select '{23.4, -45, 7895}'::numeric[] = '{12, 12, 12}'::real... 
              ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 
Time: 77.539 ms 

Vous avez probablement quelque part une comparaison dans votre requête. Fixez cela avec une distribution, et vous devriez aller bien.

+0

Oui, j'ai une comparaison avant l'insertion. Donc c'est le problème, pas dans l'insert mais dans la comparaison. – Falcoa