Sybase sybpydb查询不返回任何内容

alh*_*alh 6 python sql sybase-ase

我目前正在使用sybpydb连接到Sybase 15.7服务器.好像连接好了:

import sys
sys.path.append('/dba/sybase/ase/15.7/OCS-15_0/python/python26_64r/lib')
sys.path.append('/dba/sybase/ase/15.7/OCS-15_0/lib')
import sybpydb

conn = sybpydb.connect(user='usr', password='pass', servername='serv')
Run Code Online (Sandbox Code Playgroud)

工作正常.更改任何连接详细信息会导致连接错误.

然后我选择一个数据库:

curr = conn.cursor()
curr.execute('use db_1')
Run Code Online (Sandbox Code Playgroud)

但是,现在当我尝试运行查询时,它总是会返回 None

print curr.execute('select * from table_1')
Run Code Online (Sandbox Code Playgroud)

我试过在同一个地方运行useselect查询execute,我试过go在每次之后都包含命令,我curr.connection.commit()在每次尝试后都试过,都没有成功.我已经确认,使用dbartisanisql我使用的相同查询返回条目.

为什么我没有从python中的查询中获得结果?

编辑:

只是一些额外的信息.为了使sybpydb导入工作,我不得不更改两个环境变量.我添加了lib路径(与我添加的路径相同sys.path)$LD_LIBRARY_PATH,即:

setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH":dba/sybase/ase/15.7/OCS-15_0/python/python26_64r/lib:/dba/sybase/ase/15.7/OCS-15_0/lib
Run Code Online (Sandbox Code Playgroud)

我不得不将SYBASE路径从12.5改为15.7.所有这一切都是在csh.

如果我打印conn.error(),在每个curr.execute()之后,我得到:

("Server message: number(5701) severity(10) state(2) line(0)\n\tChanged database context to 'master'.\n\n", 5701)
Run Code Online (Sandbox Code Playgroud)

bit*_*cle 1

我完全理解您可能会对文档感到困惑的地方。它似乎与其他数据库扩展(例如 psycopg2)不相上下。

当与大多数标准数据库扩展连接时,您可以指定一个数据库。然后,当您想从查询中获取数据时SELECT,您可以使用 fetch (一种不错的方法)或迭代器(更Pythonic 的方法)。

import sybpydb as sybase

conn = sybase.connect(user='usr', password='pass', servername='serv')
cur = conn.cursor()

cur.execute("use db_1")
cur.execute("SELECT * FROM table_1")
print "Query Returned %d row(s)" % cur.rowcount

for row in cur:
    print row

# Alternate less-pythonic way to read query results
# for row in cur.fetchall():
#    print row
Run Code Online (Sandbox Code Playgroud)

尝试一下,让我们知道它是否有效。