Partage
  • Partager sur Facebook
  • Partager sur Twitter

PostgreSQL, nombre limite d'insertion de données

PostgreSQL, insertion de données (nombre maximum)

Sujet résolu
    5 juin 2020 à 14:41:11

    Bonjour,

    Je travaille avec PostgreSQL et je souhaite savoir l'option qui me permettra d'insérer 4013 lignes d'un seul coup ?

    Je m'explique, sur Odoo 12, j'ai un objet qui permet d'insérer des éléments et le souci, c'est la connexion ou la requête se perd:

    class Data(models.Model):
       _name = 'data.data'
    
       def values_list(self, invoice_ids=None):
           values_list = []
           for inv_id in invoice_ids:
               # len(invoice_ids) is 4013
               values = {
                 'name': inv_id.name,
                 'amount': inv_id.amount
               }
               values_list.append(values)
           return values_list
        
        def fill_data_into_doc(self):
            domain = [('active','=', True),('status','in',['paid','done'])]
            invoice_ids = self.env['account.invoice'].search(domain)
            values_list = self.values_list(invoice_ids)
            for value_list in values_list:
                self.item_ids = [(0,0,value_list)] # 4013 écritures que le programme perd la connexion
     

    Donc, si c'est ce que je pense, je vous prie de me communiquer l'option (PostgreSQL) qui permettra de corriger cette écriture dans la base de données.

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      5 juin 2020 à 14:55:42

      Bonjour,

      Je ne connais pas bien Python, mais je pense que l'erreur a plus de chance de venir de la limite de temps d'exécution du script côté Python que côté PostGreSQL.

      On ne voit pas dans ce code la partie qui exécute la(les) requête(s) d'insertion, je suppose que c'est du un par un et non un insert groupé ...

      As-tu accès au code qui fait l'insertion ?

      Sinon côté PostGreSQL : https://www.postgresql.org/docs/9.4/runtime-config-client.html#GUC-STATEMENT-TIMEOUT

      Dans tous les cas il serait intéressant de regarder les logs d'erreur des deux côtés pour voir ce qui se passe réellement ...

      -
      Edité par Benzouye 5 juin 2020 à 14:56:36

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        5 juin 2020 à 17:42:34

        Merci pour l'option statement_timeout.

        Pour les requetes SQL, je fais entierement confiance aux ORM = > self.env['account.invoice'] /.search()/create()/write()

        -
        Edité par ValueIsEmpty 5 juin 2020 à 17:47:03

        • Partager sur Facebook
        • Partager sur Twitter
          5 juin 2020 à 18:09:36

          ValueIsEmpty a écrit:

          Merci pour l'option statement_timeout

          C'était bien ça qui plantait ton script ?

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            9 juin 2020 à 10:11:11

            Non,

            C'est autre chose avec le framework de Python Odoo 12 tout seul.

            Cette option m'a permit de répondre à ma propre question.

            Merci

            • Partager sur Facebook
            • Partager sur Twitter

            PostgreSQL, nombre limite d'insertion de données

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown