Найти - Пользователи
Полная версия: Не проходит insert в базу
Начало » Базы данных » Не проходит insert в базу
1 2
ZlobnayaPechenka
4kpt_III
ZlobnayaPechenkaА не проще все-таки глянуть в сторону какого-нибудь ОРМ. В этом случае всю ответственность за соответствие типам берет на себя он. Плюс решение будет платформонезависимым, т.е. с изменением базы можно будет менять только коннектор, а это одна строка

Не пададот. Приходится изобретать велосипед. А он не едет
FishHook
py.user.next
Посмотрел исходники, он там соединён с datetime напрямую.
Да это не важно. Есть python database API PEP 0249, если я правильно помню этот документ, в нем описан интерфейс абстрактного курсора к реляционным СУБД. Типы питона должны мапиться на типы базы данных автоматически.
ZlobnayaPechenka
FishHook
Типы питона должны мапиться на типы базы данных автоматически.

ТО есть, если я сменю в базе date на timestamp, может получиться?
FishHook
ZlobnayaPechenka
ТО есть, если я сменю в базе date на timestamp, может получиться?
Это вряд ли. Пролистайте эту статью до раздела Datatypes.
ZlobnayaPechenka
Ничего не понимаю)

Чем вот это
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()

Первый код срабатывает, второй нет
FishHook
Я может глупость скажу, а у вас случайно таблица в БД не залочена предыдущим запросом? Грант на инсерт выдан? Из консоли запрос срабатывает?
py.user.next
FishHook
Это вряд ли. Пролистайте эту статью до раздела Datatypes.
Там подходит.
Это ещё и в PEP'е написано
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
Первый код срабатывает, второй нет
Попробуй имя таблицы из первого вставить во второй, и имена полей удали.
ZlobnayaPechenka
py.user.next
Попробуй имя таблицы из первого вставить во второй, и имена полей удали.

Все оказалось гораздо банальнее - придирчивость питона к переносам строки. Правильно перенесла - заработало. Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB