Запросы 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
дайте это попробовать и давайте знайте, если это работает.