Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2006 08:17:09

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

Вот изучаю этот sqlite , появлявляются ток вопросы
1. Как измерить колличество записей в таблице.
2. Как вывести определенную запись , например таблица table(numb int,name varchar(50)) , как вывести , например , при numb = 5 .

to be contuned ….



Офлайн

#2 Окт. 19, 2006 10:13:20

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

1. num = cursor.execute('SELECT count() from you_table')
2. entry = cursor.execute('SELECT * from you_table WHERE numb=5')
print “numb:%s, name: %s ”% (entry, entry)



Офлайн

#3 Окт. 19, 2006 16:04:54

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

2. Работает только так :
sm = cur.execute(“select kl,line from keys where line=4”).fetchone()
print sm,sm



Отредактировано (Окт. 19, 2006 16:06:37)

Офлайн

#4 Окт. 19, 2006 16:17:24

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

Я fetchone просто пропустил когда писал :)
Должно быть так:
1.
sel = cursor.execute('SELECT count() from your_table')
num = sel.fetchone()
2.
sel = cursor.execute('SELECT * from your_table WHERE numb=5')
entry = sel.fetchone()
print “numb:%s, name: %s ”% (entry, entry)



Офлайн

#5 Окт. 20, 2006 14:29:24

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

2. Неа , так вот правильней, вроде бы :

sel = cursor.execute('SELECT count(stolbec_for_count) from your_table')
num = sel.fetchone()



Офлайн

#6 Окт. 21, 2006 13:30:43

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

niro
2. Неа , так вот правильней, вроде бы :
Код: :python:

sel = cursor.execute('SELECT count(stolbec_for_count) from your_table') num = sel.fetchone()
Это не правильней. Все зависит от задачи. Если использовать count с указанием столбца, то он не посчитает строки, где значения столбца NULL. А тебе требовалось общее кол-во записей в таблице. Поэтому надо COUNT(*).



Офлайн

#7 Окт. 26, 2006 15:23:31

Cyxapeff
От:
Зарегистрирован: 2006-08-17
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

Гм. Помогите пожалуйста. Есть строчка:
cu.executemany(“”“INSERT INTO traffic VALUES (%s, %s, %s, %s, %s, %s, %s, %s);”“”, line)
line:
('2006-10-25 00:00:00', ‘212.49.103.113’, ‘2984’, ‘6’, ‘195.133.54.30’, ‘6500’, ‘514’, ‘0’)

При этом питон падает с такой ошибкой:
Traceback (most recent call last):
File “C:\python\parser.py”, line 45, in <module>
add_db(“test.db”, content)
File “C:\python\parser.py”, line 39, in add_db
cu.executemany(“”“INSERT INTO traffic VALUES (%s, %s, %s, %s, %s, %s, %s, %s
);”“”, line)
sqlite3.OperationalError: near “%”: syntax error

Что я делаю не правельно?



Офлайн

#8 Окт. 26, 2006 15:35:39

koder
От:
Зарегистрирован: 2006-09-29
Сообщения: 95
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

В sqlite параметры форматируются через “?”.
Т.е. нужно писать
cu.executemany(“”“INSERT INTO traffic VALUES (?, ?, ?, ?, ?, ?, ?, ?);”“”, line)
или, если ты хочеш через питоновское форматирование
for i in line:
cu.execute(“”“INSERT INTO traffic VALUES (%s, %s, %s, %s, %s, %s, %s, %s);”“” % i)
но первый вариант во всех отношениях лучше



Офлайн

#9 Окт. 26, 2006 15:49:29

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

koder
В sqlite параметры форматируются через “?”.
Такие параметры для подстановки в sqlite2 вроде появились. До этого было ‘%s’.



Офлайн

#10 Окт. 26, 2006 16:03:50

koder
От:
Зарегистрирован: 2006-09-29
Сообщения: 95
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по sqlite

python 2.5 documentations:
13.13 sqlite3 – DB-API 2.0 interface for SQLite databases

# Larger example
for t in (('2006-03-28', ‘BUY’, ‘IBM’, 1000, 45.00),
('2006-04-05', ‘BUY’, ‘MSOFT’, 1000, 72.00),
('2006-04-06', ‘SELL’, ‘IBM’, 500, 53.00),
):
c.execute('insert into stocks values (?,?,?,?,?)', t)

slivlen
Такие параметры для подстановки в sqlite2 вроде появились. До этого было ‘%s’.
sqlite1 не помню - очень давно было :).



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version