Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2015 14:54:46

ZlobnayaPechenka
Зарегистрирован: 2015-05-12
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не проходит insert в базу

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

Не пададот. Приходится изобретать велосипед. А он не едет

Офлайн

#2 Май 13, 2015 15:31:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не проходит insert в базу

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



Офлайн

#3 Май 13, 2015 15:36:31

ZlobnayaPechenka
Зарегистрирован: 2015-05-12
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не проходит insert в базу

FishHook
Типы питона должны мапиться на типы базы данных автоматически.

ТО есть, если я сменю в базе date на timestamp, может получиться?

Офлайн

#4 Май 13, 2015 15:56:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не проходит insert в базу

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



Офлайн

#5 Май 13, 2015 16:28:54

ZlobnayaPechenka
Зарегистрирован: 2015-05-12
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не проходит insert в базу

Ничего не понимаю)

Чем вот это

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)

Офлайн

#6 Май 13, 2015 16:49:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не проходит insert в базу

Я может глупость скажу, а у вас случайно таблица в БД не залочена предыдущим запросом? Грант на инсерт выдан? Из консоли запрос срабатывает?



Отредактировано FishHook (Май 13, 2015 16:51:06)

Офлайн

#7 Май 14, 2015 00:39:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8667
Репутация: +  770  -
Профиль   Отправить e-mail  

Не проходит insert в базу

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
Первый код срабатывает, второй нет
Попробуй имя таблицы из первого вставить во второй, и имена полей удали.



Отредактировано py.user.next (Май 14, 2015 00:48:37)

Офлайн

#8 Май 14, 2015 08:43:49

ZlobnayaPechenka
Зарегистрирован: 2015-05-12
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Не проходит insert в базу

py.user.next
Попробуй имя таблицы из первого вставить во второй, и имена полей удали.

Все оказалось гораздо банальнее - придирчивость питона к переносам строки. Правильно перенесла - заработало. Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version