Форум сайта python.su
Вот изучаю этот sqlite , появлявляются ток вопросы
1. Как измерить колличество записей в таблице.
2. Как вывести определенную запись , например таблица table(numb int,name varchar(50)) , как вывести , например , при numb = 5 .
to be contuned ….
Офлайн
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)
Офлайн
2. Работает только так :
sm = cur.execute(“select kl,line from keys where line=4”).fetchone()
print sm,sm
Отредактировано (Окт. 19, 2006 16:06:37)
Офлайн
Я 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)
Офлайн
2. Неа , так вот правильней, вроде бы :
sel = cursor.execute('SELECT count(stolbec_for_count) from your_table')
num = sel.fetchone()
Офлайн
niroЭто не правильней. Все зависит от задачи. Если использовать count с указанием столбца, то он не посчитает строки, где значения столбца NULL. А тебе требовалось общее кол-во записей в таблице. Поэтому надо COUNT(*).
2. Неа , так вот правильней, вроде бы :
Код: :python:
sel = cursor.execute('SELECT count(stolbec_for_count) from your_table') num = sel.fetchone()
Офлайн
Гм. Помогите пожалуйста. Есть строчка:
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
Что я делаю не правельно?
Офлайн
В 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)
но первый вариант во всех отношениях лучше
Офлайн
koderТакие параметры для подстановки в sqlite2 вроде появились. До этого было ‘%s’.
В 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)
slivlensqlite1 не помню - очень давно было :).
Такие параметры для подстановки в sqlite2 вроде появились. До этого было ‘%s’.
Офлайн