0

一部のコードを perl から Python に移行しています。以下のコードを使用して、更新する必要がある CLOB を読み取ることができます。

cur.execute("""
SELECT
    , a.Category
    , a.Status
    …
    , c.name
    , a.orig_operator
FROM tables where stuff
""")

for result in cur:
    startTimes = result[18].read( # stringify from lob
    stopTimes = result[19].read()
    lobsterCode = result[17].read()

CLOB 列の 1 つを更新するにはどうすればよいですか? Perl で を選択しUPDATE、DBI からbin_locator使用します。ora_lob_write

Python の同等物を示す例を探しています。

4

1 に答える 1

1

申し訳ありませんが、私は Python 3.2 を持っていません。これは Python 2.7 上にあります。

オラクルの場合:

scott@XE_11g> CREATE TABLE t (id NUMBER, c CLOB);

Table created.

scott@XE_11g> INSERT INTO t VALUES (1, 'Happy families are all alike; every unhappy family is unhappy in its own way.');

1 row created.

scott@XE_11g> INSERT INTO t VALUES (2, q'[You don't know about me without you have read a book by the name of The Adventures of Tom Sawyer; but that ain't no matter.]');

1 row created.

scott@XE_11g> COMMIT;

Commit complete.

scott@XE_11g>

今、Pythonで:

import cx_Oracle

connection = cx_Oracle.connect('scott/tiger@XE')
cursor = connection.cursor()
new_clob = cursor.var(cx_Oracle.CLOB)
new_clob.setvalue(0,'It was a bright cold day in April, and the clocks were striking thirteen. ')
key_id = cursor.var(cx_Oracle.NUMBER)
key_id.setvalue(0,2)

cursor.execute("""UPDATE t
                  SET    c = :p_clob
                  WHERE  id = :p_key"""
,              p_clob = new_clob
,              p_key = key_id
               )
connection.commit()

そして、再び Oracle に戻ります。

scott@XE_11g> SELECT c FROM t WHERE id = 2;

C
----------------------------------------------------------------------------------------------------
It was a bright cold day in April, and the clocks were striking thirteen.

scott@XE_11g>

お役に立てれば。

于 2012-11-14T21:42:06.880 に答える