Запросы Sybase sybpydb ничего не возвращают

в настоящее время я подключаюсь к серверу Sybase 15.7 с помощью sybpydb. Кажется, все в порядке:

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')

работает нормально. Изменяя свои результаты в сообщение об ошибке соединения.

затем я выбираю базу данных:

curr = conn.cursor()
curr.execute('use db_1')

однако теперь, когда я пытаюсь запустить запросы, он всегда возвращает None

print curr.execute('select * from table_1')

я пробовал запустить use и select запросы в том же execute, Я пробовал в том числе go команды после каждого, я попытался использовать curr.connection.commit() после каждого, все без успеха. Я подтвердил, используя dbartisan и isql, что те же запросы я использую возвращать записи.

почему я не получаю результаты от своих запросов в python?

EDIT:

просто дополнительная информация. Для того, чтобы получить 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

и мне пришлось изменить SYBASE путь от 12,5 до 15,7. Все это было сделано в csh.

если я напечатаю conn.error (), после каждого curr.выполнить(), я получаю:

("Server message: number(5701) severity(10) state(2) line(0)ntChanged database context to 'master'.nn", 5701)

1 ответов


Я полностью понимаю, где вы можете быть смущены документацией. Его, похоже, не наравне с другими расширениями БД (например, psycopg2).

при подключении к большинству стандартных расширений БД можно указать базу данных. Затем, когда вы хотите получить данные обратно из SELECT запрос, вы либо используете fetch (an ok способ сделать это) или iterator (тег более 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

дайте это попробовать и давайте знайте, если это работает.