2010-05-18 3 views
0

J'essaie de créer une connexion de base de données dans un script python à ma base de données DB2. Lorsque la connexion est établie, je dois exécuter des instructions SQL différentes.Connexion à DB2 en Python

J'ai googlé le problème et j'ai lu l'API ibm_db (http://code.google.com/p/ibm-db/wiki/APIs) mais je n'arrive pas à le comprendre.

Voici ce que je suis arrivé à ce jour:

import sys 
import getopt 
import timeit 
import multiprocessing 
import random 
import os 
import re 
import ibm_db 
import time 
from string import maketrans 

query_str = None 

conn = ibm_db.pconnect("dsn=write","usrname","secret") 
query_stmt = ibm_db.prepare(conn, query_str) 
ibm_db.execute(query_stmt, "SELECT COUNT(*) FROM accounts") 
result = ibm_db.fetch_assoc() 
print result 
status = ibm_db.close(conn) 

mais je reçois une erreur. J'ai vraiment tout essayé (ou, pas tout, mais sacrément proche) et je ne peux pas le faire fonctionner.

J'ai juste besoin de faire un script python de test automatique qui peut tester différentes requêtes avec différents index et ainsi de suite et pour cela j'ai besoin de créer et supprimer des index sur une longue période.

J'espère que quelqu'un a une solution ou peut-être connaît quelques exemples de codes que je peux télécharger et étudier.

Merci

Mestika

+1

Qu'est-ce qui se passe? Il serait utile que vous expliquiez ce que «ne fonctionne pas» signifie réellement. –

Répondre

3

il devrait être:

query_str = "SELECT COUNT(*) FROM accounts" 

conn = ibm_db.pconnect("dsn=write","usrname","secret") 
query_stmt = ibm_db.prepare(conn, query_str) 
ibm_db.execute(query_stmt) 
+0

Merci beaucoup SilentGhost, ça fonctionne comme un charme! Vous venez d'enregistrer ma semaine :-) – Mestika

0

Je suis désolé, la cause que vous devez message d'erreur. Lorsque vous essayez de lancer mon script, il me donne cette erreur:

Traceback (most recent call last): 
    File "test.py", line 16, in <module> 
    ibm_db.execute(query_stmt, "SELECT COUNT(*) FROM accounts") 
Exception: Param is not a tuple 

Je suis assez sûr que c'est mon paramètre « SELECT COUNT (*) à partir de comptes » qui est le problème, mais je ne sais pas comment réparer ou quoi mettre à sa place.

+0

Essayez d'utiliser des guillemets simples, pourrait travailler – user3754136