6

現在、 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')

正常に動作しています。接続の詳細を変更すると、接続エラーが発生します。

次に、データベースを選択します。

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

ただし、クエリを実行しようとすると、常に返されますNone

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

useselectクエリを同じexecuteで実行しようとしましたgoが、それぞれの後にコマンドを含めようとしcurr.connection.commit()ましたが、それぞれの後に使用しようとしましたが、すべて成功しませんでした。dbartisanと を使用して、使用しisqlている同じクエリがエントリを返すことを確認しました。

Python でクエリを実行しても結果が得られないのはなぜですか?

編集:

追加情報です。インポートを機能させるために、sybpydb2 つの環境変数を変更する必要がありました。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

すべての curr.execute() の後に conn.error() を出力すると、次のようになります。

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

2 に答える 2

1

ドキュメントのどこで混乱する可能性があるかは完全に理解しています。他の db 拡張 (psycopg2 など) と同等ではないようです。

ほとんどの標準的な db 拡張機能で接続する場合、データベースを指定できます。SELECT次に、クエリからデータを取得したい場合は、フェッチ (それを行うための適切な方法) またはイテレータ (それを行うためのより 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

試してみて、うまくいくかどうかお知らせください。

于 2012-12-29T19:01:06.117 に答える