Форум сайта python.su
Здравствуйте.
Есть БД с табличкой
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
fio TEXT NOT NULL,
room INTEGER,
"login" TEXT UNIQUE,
"psw" TEXT NOT NULL,
commentary TEXT DEFAULT NULL
)
INSERT INTO "users " VALUES ("1","Иванова Ольга Сергеевна",2,"ivos","202cb962ac59075b964b07152d234b70",null);
INSERT INTO "users " VALUES ("2","Петрова Ольга Александровна",3,"peoa","202cb962ac59075b964b07152d234b70",null);
INSERT INTO "users " VALUES ("3","Смирнова Светлана Сергеевна",NULL,"smss","202cb962ac59075b964b07152d234b70",null);
conn = sqlite3.connect('test.sqlite',detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
c = conn.cursor()
c.execute('select id, room from users where room is NULL')
tmp=''
for row in c:
tmp = '/cgi?id=%s&room=%s' % (row[0], row[1])
id = row[0]
room = row[1]
#... Далее я принимаю эти параметры через bottle
id= request.GET.get('id')
room = request.GET.get('room')
# и делаю
c.execute('update users set room=? where id=?', (room,id,))
conn.commit()
conn.close()
Офлайн
c.execute('select id, CASE WHEN room IS NULL THEN -1 ELSE room END from users where room is NULL')
Офлайн
А по-другому никак? Если в таблице 10 столбцов, и для каждого CASE писать - вообще не сахар… Может проще есть?
Офлайн
UPDATE your_table SET your_fieild = -1 WHERE your_field IS NULL ?
Хотя больше это похоже на проблему форматирования пустых значений - смотрите на параметры форматирования тех компонент, которыми отображаете табличку.
Офлайн
Все оказалось просто:
conn = sqlite3.connect('test.sqlite',detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
c = conn.cursor()
c.execute('select id, room from users where room is NULL')
tmp=''
for row in c:
tmp = '/cgi?id=%s&room=%s' % (row[0], row[1])
id = row[0]
room = row[1]
#...
# Далее я принимаю эти параметры через bottle
id= request.GET.get('id')
room = request.GET.get('room')
# и делаю
if room == 'None'
room = None
c.execute('update users set room=? where id=?', (room,id,))
conn.commit()
conn.close()
Офлайн