Jython zxJDBC.cursor fetchone () для переменной сеанса, я получаю массив - PullRequest
0 голосов
/ 29 августа 2009

Я использую Jython2.5.0, mysql-connector-java-5.0.8-bin.jar, потому что мой сервер Mysql5.0.38 В моем приложении Jython есть проблема.

Две функции:

def act_query(query):  
    connection = conn    //conn is global and has been assigned when called  
    cursor = connection.cursor()  
    num_affected_rows = cursor.execute(query)  
    cursor.close()  
    connection.commit()  
    return num_affected_rows  

def get_row(query):  
    connection = conn  
    cursor = connection.cursor()  
    cursor.execute(query)  
    row = cursor.fetchone()  
    cursor.close()  
    return row  

Тогда я делаю что-то вроде этого:

query = """SELECT count(*) from test_db.test_table1 into @max"""  
act_query(query)  
get_query= """ select @max """  
row = get_row(get_query)  
print row  

Вывод выглядит примерно так: array('b', [49, 52, 54, 50, 56, 48, 52])

Я пытаюсь найти причину и сделать тест вроде:

test_query = """select count(*) from test_db.test_table1"""  
row = get_row(test_query)  
print row  

Вывод правильный ответ

На самом деле это сначала скрипт на CPython с MySQLdb, а я превращаю его в Jython с zxJDBC
Это хорошо работало в CPython, но сейчас не может работать.
В CPython курсор может быть определен как

курсор = соединение.курсор (MySQLdb.cursors.DictCursor)

но в zxJDBC, похоже, нет выбора для создания курсора.
Это причина?
Пожалуйста, покажи мне путь. Спасибо!

1 Ответ

1 голос
/ 11 сентября 2009

Я получил ответ от jython mailist. Переменная сеанса, получаемая JDBC, имеет тип varbinary. zxJDBC делает его массивом. Правильный вывод можно получить, преобразовав массив в int с помощью str (byte []).

...