Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
В этом фрагменте демонстрируется безопасная загрузка модуля cx_Oracle и проверка версии. (Надеюсь, элегантность синтаксиса все-таки заметили).
Далее создадим экземпляр класса connect – именно этот объект и обеспечивает взаимодействие с сервером Oracle.
try:
my_connection=cx_Oracle.connect('system/manager@test_db')
except cx_Oracle.DatabaseError,info:
print "Logon Error:",info
exit(0)
Теперь создаем курсор и выполняем запрос:
my_cursor=my_connection.cursor()
try:
my_cursor.execute("""
SELECT OWNER,SEGMENT_TYPE,TABLESPACE_NAME,SUM(BLOCKS)SIZE_BLOCKS, COUNT(*) SIZE_EXTENTS FROM DBA_EXTENTS
GROUP BY OWNER,SEGMENT_TYPE,TABLESPACE_NAME
""")
except cx_Oracle.DatabaseError,info:
print "SQL Error:",info
exit(0)
Печатаем результат на stdout. Замечу здесь, что my_cursor.description возвращает описание столбцов запроса в виде списка кортежей. Для каждого столбца возвращаются следующие данные: (name, type_code, display_size, internal_size, precision, scale, null_ok).
Далее следует форматированный вывод на stdout (почти как printf в языке C).
print 'Database:',my_connection.tnsentry
print "Used space by owner, object type, tablespace "
print "-------------------------------------------------"
title_mask=('%-16s','%-16s','%-16s','%-8s','%-8s')
i=0
for column_description in my_cursor.description:
print title_mask[i]%column_description[0],
i=1+i
print ''
print "-------------------------------------------------"
row_mask='%-16s %-16s %-16s %8.0f %8.0f '
for recordset in my_cursor.fetchall():
print row_mask%recordset
В результате мы увидим что-то вроде:
Database: testdb
Used space by owner, object type, tablespace
-------------------------------------------------------------