2012-02-06 10 views
0

Я пытался выяснить, как работать с базой данных SQLite с помощью python, но, похоже, застрял. Я думаю, что мне не хватает чего-то основного. Я следовал этот учебник: http://docs.python.org/library/sqlite3.htmlИзвлечение значений из базы данных SQLite в Python

Я создал базу данных таким образом, что она содержит следующую информацию:

import sqlite3 
conn = sqlite3.connect('SQL_test_3') #this creates a seperate file 
c = conn.cursor() 
c.execute('''create table stocks 
(date text, trans text, symbol text, 
qty real, price real)''') 
data = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00), 
      ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00), 
      ('2006-04-06', 'SELL', 'IBM', 500, 53.00), 
     ] 

for t in data: 
    c.execute('insert into stocks values (?,?,?,?,?)', t) 

conn.commit() 

c.close() 

Мои проблемы возникают при попытке извлечь данные; учебник объясняет, как извлечь данные, если одна из характеристик удовлетворены, например:

(Когда я открываю базу данных в другом файле)

import sqlite3 

conn = sqlite3.connect('SQL_test_3') 

c = conn.cursor() 

price = 53 
t = (price,) 
c.execute('select * from stocks where price=?', t) 
print c.fetchall() 

выше работает отлично, но если я хочу извлечение информации для всех активов, цена которых выше 50, я не могу этого сделать. Цена исполнения> 50 и цена>? не работает ...

Так что мои вопросы:

1) Как извлечь информацию для актива, когда основной критерий является умещается в заданном диапазоне, например, цены> 50 или 40 < цены < 70.

2) А что, если бы я хотел иметь два критерия, например, информация для акций IBM и если запас был продан, скажем, цена больше, чем 50.

Я чувствую, что мой вопросы очень новички/основные, но я не мог найти ответы на них в учебнике.

Любая помощь приветствуется.

Спасибо заранее.

+0

Я попытался запустить ваш код, и он отлично работает для меня. Пожалуйста, напишите точный код, который вы пытались использовать '>', и полученный результат, когда вы его запускали. – Duncan

+1

Несомненно, это вопрос SQL, а не Python? –

+0

Дункан, я получил эту линию для работы с: цены = 50 т = (цена,) c.execute ('? * Выбрать из акций, где цена>', т) z4 = c.fetchall() print z4 Спасибо – Akavall

ответ

2
c.execute('select * from stocks where price > ?', (50,)) 

c.execute('select * from stocks where price between ? and ?', (40, 70)) 

c.execute('select * from stocks where price > ? and symbol = ?', (50, 'IBM')) 

Это нормально или вам нужно универсальное решение?

+0

Это первое не сработает: вам нужен кортеж ни одного значения. – Duncan

+0

Ваша первая и вторая строки все еще не работают для меня. Ваша 3-я строка работает нормально. Благодарю. – Akavall

+0

ОК. Проблема была в моем конце. Я понял. Большое спасибо! – Akavall

Смежные вопросы