2010-05-18 102 views
0

我想在我的DB2数据库的python脚本中创建一个数据库连接。当连接完成后,我必须运行一些不同的SQL语句。在Python中连接到DB2

我搜索了这个问题,并阅读了ibm_db API(http://code.google.com/p/ibm-db/wiki/APIs),但看起来似乎无法正确。

这是我走到这一步:

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) 

,但我得到一个错误。我真的尝试过所有的东西(或者,并不是所有的东西都非常贴心),我无法完成它的工作。

我只需要做一个自动测试python脚本,可以测试不同的查询与不同的索引等等,为此我需要创建和删除索引很长的路。

希望有人有解决方案或可能知道一些示例代码,我可以下载和研究。

感谢

Mestika

+1

会发生什么?如果你进一步解释“不起作用”实际上意味着什么,这将会很有帮助。 – 2010-05-18 16:20:12

回答

3

它应该是:

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

非常感谢你SilentGhost,它像一个魅力工作!你刚刚救了我的一周:-) – Mestika 2010-05-18 17:09:48

0

对不起,原因你需要错误消息。当试图运行我的脚本它给我这个错误:

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 

我敢肯定,这是我的参数“SELECT COUNT(*)FROM账户”,这是问题,但我不知道如何修理它或者放置它的位置。

+0

尝试使用单引号,可能会工作 – user3754136 2015-09-29 18:53:13