J'ai besoin d'écrire un script "autonome" dans Python pour télécharger des taxes de vente à la table de comptes_tax dans la base de données en utilisant uniquement le module ORM d'OpenerP. Ce que j'aimerais faire, c'est quelque chose comme le pseudo code ci-dessous.
Quelqu'un peut-il me fournir plus de détails sur ce qui suit: 1) Qu'est-ce que je dois définir 2) Quels modules dois-je importer avant d'importer le module "Compte". Actuellement, lorsque j'importe le module "Compte", j'obtiens l'erreur suivante: AssertionError: Le rapport "Report.custom" existe déjà! 3) Quelle est la bonne façon d'obtenir mon curseur de base de données. Dans le code ci-dessous, j'appelle simplement Psycopg2 directement pour obtenir un curseur. P>
Si cette approche ne peut pas fonctionner, quelqu'un peut-il suggérer une approche alternative autre que d'écrire des fichiers XML pour charger les données de l'application Openerp elle-même. Ce processus doit fonctionner en dehors de l'application Standard Openerp. P>
Code pseudo: P>
import sys # set Python paths to access openerp modules sys.path.append("./openerp") sys.path.append("./openerp/addons") # import OpenERP import openerp # import the account addon modules that contains the tables # to be populated. import account # define connection string conn_string2 = "dbname='test2' user='xyz' password='password'" # get a db connection conn = psycopg2.connect(conn_string2) # conn.cursor() will return a cursor object cursor = conn.cursor() # and finally use the ORM to insert data into table.
8 Réponses :
Pourquoi n'utilisez-vous pas l'appel XMLRPC d'Openerp. Il n'aura pas besoin d'importer un compte ni d'ouvrir. et même vous pouvez avoir toutes les fonctionnalités ORM. P>
Si vous voulez le faire via un service Web, alors consultez le Openerp XML-RPC Web Services
Exemple de code Top travail avec openerp Web Services: P>
import openerplib connection = openerplib.get_connection(hostname="localhost", database="test", \ login="admin", password="admin") user_model = connection.get_model("res.users") ids = user_model.search([("login", "=", "admin")]) user_info = user_model.read(ids[0], ["name"]) print user_info["name"]
Merci pour l'aide. En utilisant OpenerPlib, est-il un moyen d'interroger la base de données avec des relevés de SQL Ole SQL? Si tel est le cas, est-il un moyen d'obtenir le curseur de base de données sur lequel exécuter la requête SQL?
Bonjour, Tim à l'aide d'un service Web Vous ne pouvez pas appeler directement le déclencheur SQL mais que leur est toujours un moyen de sortir. Dans certains modèles, vous écrivez la fonction avec les déclencheurs SQL, puis utilisez le service de modèle que vous pouvez déclencher la fonction qui déclenche le SQL.
Comment puis-je trouver le nom de la base de données?
Selon mon affichage, il faut aller pour Vous n'avez pas besoin d'importer Finalement, si vous nourrissez des données en appelant ces méthodes manuellement sans utiliser OPEN ERP xmlrpc code> ou
netsvc code> services fournis par Open ERP pour de tels besoins. p>
Comptes code> de l'ERP ouvert, il existe des possibilités que d'autres modules ont hérité d'objet
comptes.tax code> et avaient modifié son comportement selon votre les besoins de l'entreprise. p>
Web Service CODE> STI est possible, vous obtiendrez des résultats indésirables / Échecs inattendus / State de base de données incohérente. P>
Vous pouvez utiliser ERPPek pour parcourir les données, mais pas sûr si vous pouvez vraiment télécharger des données à dB, personnellement, j'utilise / préfère XMLRPC P>
Vous pouvez utiliser Python Bibliothèque pour accéder à Openerp Server à l'aide du service XMLRPC. Veuillez vérifier https://github.com/openerp/openerp-client-lib p>
Il est officiellement pris en charge par Openerp SA. P>
Si vous voulez interagir directement avec la base de données, vous pouvez simplement
Pourquoi vous voulez le réparer comme ça ?! Vous devriez créer un module de localisation strong> et définir des données dans Vous voulez insérer des taxes de vente pour quel pays? Expliquez plus PLZ. P>
à partir d'openerp.modules.registry Importer RegistryManager
registre = registrymanager.get ("Databasename")
avec registre.cursor () comme Cr:
Utilisateur = registre.get ('res.utilisateurs'). Parcourir (Cr, Userid, Listids)
Print utilisateur
P>
Salut Tim Vous souhaitez utiliser uniquement ORM comme module ou que vous souhaitez que le service OE soit insérer des données sans utiliser UI ???