Уведомления

Группа в Telegram: @pythonsu

#1 Май 9, 2012 23:56:34

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Сюрпризы от sqlite3

имею бд sqlite3, использую штатный модуль sqlite3/python2.7
1. Столкнулся с проблемой - не работает каскадность. Оказывается, что

SQLite foreign keys are disabled for compatibility purposes. You need to enable them manually right after each connection to the database.
con.execute("PRAGMA foreign_keys = ON")
Приятный сюрпризец. Сразу захотелось узнать, что еще подобного «припасено» - может быть где-то это описано?

2. Та же база, те же лица, только Windows взамест Linux.
имею триггер на представлении (поля OID, name, pid, total), приведено начало триггера:
CREATE TRIGGER [ListUsers_insert]
INSTEAD OF INSERT
ON ListUsers
BEGIN
-- valid: INSERT (name), INSERT (name, pid, total)
-- Field checks
    SELECT RAISE(ABORT, 'OID can not be set') WHERE NOT new.OID IS NULL;

тут шаблон испытывает некое напряжение (откуда взялось значение у OID? Есть такое поле в представлении, знаю что это также и алиас для rowid, но это как бы не при чем здесь):
>>> s._conn.execute('INSERT INTO ListUsers (name,pid,total) VALUES (?,?,?)', ('YYY',510,10))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.IntegrityError: OID can not be set

замечу, что в линупсах с тем же файлом бд все это работает как ожидалось.

Отредактировано beelze (Май 9, 2012 23:59:47)

Офлайн

#2 Май 10, 2012 09:25:52

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

Сюрпризы от sqlite3

beelze
Подход мне совершенно непонятный. Порожден, видимо, привычкой к спешке. Как я уже не раз объяснил, именно скулайт в данном случае - то, что нужно. И средство его администрирования тоже должно быть выбрано правильно, а не быстро. Это сэкономит в будущем и время и нервы.
Сэкономило?



Офлайн

#3 Май 10, 2012 12:51:17

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Сюрпризы от sqlite3

FishHook, что, был кирпичик все же был и оставил след в определенном месте? А теперь будьте любезны объяснить, каким образом это относится к заданному мною вопросу - надо полагать, как раз-таки ответом Вы не владеете? Ну и под конец - скулайт под Win мне собсна без необходимости (хотя и любопытно, что это за дела такие), времени на решение проблемы с каскадностью было потрачено ну минут 5 от силы, но мне и их жалко, поэтому, разумеется, хотелось бы увидеть инфу о неожиданностях в одном месте и в удобном виде.

Офлайн

#4 Май 10, 2012 13:13:20

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Сюрпризы от sqlite3

[quote=beelze] Сразу захотелось узнать, что еще подобного «припасено» - может быть где-то это описано? [/quote] Насчет отсутствия регистронезависимого поиска в локалях отличных от C в курсе?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Май 10, 2012 13:15:48)

Офлайн

#5 Май 10, 2012 15:03:30

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Сюрпризы от sqlite3

Для разных ОС в sqlite есть свои отдельные реализации интерфейса.
Поэтому различия в поведении могут быть.



Офлайн

#6 Май 10, 2012 15:46:21

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Сюрпризы от sqlite3

PooH, вопросы, относящиеся к локалям - платформо- и прочеезависимы по определению, так что неожиданностями их я бы не назвал. Под «сюрпризами» я понимаю внезапные обнаружения неканонического поведения - таких, как SQLite foreign keys are disabled или Null в PRIMARY KEY. Я уже начинаю подумывать, что и процедуры в скулайте есть, только не включены

Поэтому различия в поведении могут быть.\
однако чрезвычайно фундаментальное различие…

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version