Форум сайта python.su
4kpt_III
ZlobnayaPechenkaА не проще все-таки глянуть в сторону какого-нибудь ОРМ. В этом случае всю ответственность за соответствие типам берет на себя он. Плюс решение будет платформонезависимым, т.е. с изменением базы можно будет менять только коннектор, а это одна строка
Офлайн
py.user.nextДа это не важно. Есть python database API PEP 0249, если я правильно помню этот документ, в нем описан интерфейс абстрактного курсора к реляционным СУБД. Типы питона должны мапиться на типы базы данных автоматически.
Посмотрел исходники, он там соединён с datetime напрямую.
Офлайн
FishHook
Типы питона должны мапиться на типы базы данных автоматически.
Офлайн
ZlobnayaPechenkaЭто вряд ли. Пролистайте эту статью до раздела Datatypes.
ТО есть, если я сменю в базе date на timestamp, может получиться?
Офлайн
Ничего не понимаю)
Чем вот это
import cx_Oracle con = cx_Oracle.connect('pythonhol/welcome@127.0.0.1/orcl') rows = [ (1, "First" ), (2, "Second" ), (3, "Third" ), (4, "Fourth" ), (5, "Fifth" ), (6, "Sixth" ), (7, "Seventh" ) ] cur = con.cursor() cur.bindarraysize = 7 cur.setinputsizes(int, 20) cur.executemany("insert into mytab(id, data) values (:1, :2)", rows) con.commit() cur.close() сon.close()
con = cx_Oracle.connect('pythonhol/welcome@127.0.0.1/orcl') cur = con.cursor() example = [ (1, "examples" ) ] cur.setinputsizes(int, 20) cur.executemany ( "insert into table_1 (ID, NAME_FILE) values (:1, :2)", example) con.commit() cur.close() con.close()
Отредактировано ZlobnayaPechenka (Май 13, 2015 16:29:14)
Офлайн
Я может глупость скажу, а у вас случайно таблица в БД не залочена предыдущим запросом? Грант на инсерт выдан? Из консоли запрос срабатывает?
Отредактировано FishHook (Май 13, 2015 16:51:06)
Офлайн
FishHookТам подходит.
Это вряд ли. Пролистайте эту статью до раздела Datatypes.
Type Objects may be equal to more than one type code (e.g. DATETIME could be equal to the type codes for date, time and timestamp columns; see the Implementation Hints below for details).
ZlobnayaPechenkaПопробуй имя таблицы из первого вставить во второй, и имена полей удали.
Первый код срабатывает, второй нет
Отредактировано py.user.next (Май 14, 2015 00:48:37)
Офлайн
py.user.next
Попробуй имя таблицы из первого вставить во второй, и имена полей удали.
Офлайн