Форум сайта python.su
Здравствуйте, не могу найти, как подставлять переменные в качестве условий запроса на выбор данных из базы.
Пробовал так, что-то не катит.
for t_line in TitleList: for d_line in DateRan: i = 0 SumCostDay = cursor.execute('select sum(cost) from test_table where title = ' + t_line +' and date between ' + DateRan[i] +' and ' + DateRan[i+1]'') i = i+1
02.11.2013 03.11.2013 04.11.2013 05.11.2013 06.11.2013 сумма title_1 25 16 4 1 4 50 title_2 23 23 title_3 2 3 5 5 15 title_4 34 34 title_5 0
Отредактировано bystander (Ноя. 21, 2013 14:15:44)
Офлайн
не то?
http://docs.python.org/2/library/sqlite3.html
# Never do this -- insecure! symbol = 'RHAT' c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol) # Do this instead t = ('RHAT',) c.execute('SELECT * FROM stocks WHERE symbol=?', t) print c.fetchone() # Larger example that inserts many records at a time purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00), ('2006-04-06', 'SELL', 'IBM', 500, 53.00), ] c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
Офлайн
Читай внимательно тут
Офлайн
для начала попробуйте отправить запрос в бд без переменных тупо запихнув заведомо известные данные в строку , уверен на 90% что у вас ошибка в составлении запроса а не в прилепливании переменных к нему
что-же касаеться последних то как по мне то удобнее их запиливать следующим образом :
для начала по типам -
%s ——- для строк
%i ——- для чисел
%с —— для однобайтных значений ( аналог char в c++ )
эти символы надо вставить в строку куда тыкать переменные а затем подсунуть переменную типа typle() следующим образом
print 'int %i , char %c , string %s' % (1 , 'x' , 'looooool')
Отредактировано @cckyi_boxxx (Ноя. 21, 2013 17:32:55)
Офлайн
@cckyi_boxxx
как и в соседнем топике вы чего то не знаете, а именно format() - и быстрее и шире возможности, гораааздо шире
Офлайн