niro
			  Окт. 19, 2006 08:17:09
		 	 
			
				Вот изучаю этот sqlite  , появлявляются ток вопросы
1. Как измерить колличество записей в таблице.
2. Как вывести определенную запись , например таблица table(numb int,name varchar(50)) , как вывести , например , при numb = 5 . 
to be contuned ….
			
		 
		
			
			  slivlen
			  Окт. 19, 2006 10:13:20
		 	 
			
				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)
			
		 
		
			
			  niro
			  Окт. 19, 2006 16:04:54
		 	 
			
				2. Работает только так :
sm = cur.execute(“select kl,line from keys where line=4”).fetchone()
print sm,sm
			
		 
		
			
			  slivlen
			  Окт. 19, 2006 16:17:24
		 	 
			
				Я 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)
			
		 
		
			
			  niro
			  Окт. 20, 2006 14:29:24
		 	 
			
				2. Неа , так вот правильней, вроде бы :
sel = cursor.execute('SELECT count(stolbec_for_count) from your_table')
num = sel.fetchone()
			
		 
		
			
			  slivlen
			  Окт. 21, 2006 13:30:43
		 	 
			
				niro
2. Неа , так вот правильней, вроде бы :
Код: :python:
sel = cursor.execute('SELECT count(stolbec_for_count) from your_table') num = sel.fetchone()
Это не правильней. Все зависит от задачи. Если использовать count с указанием столбца, то он не посчитает строки, где значения столбца NULL. А тебе требовалось общее кол-во записей в таблице. Поэтому надо COUNT(*).
			
 
		 
		
			
			  Cyxapeff
			  Окт. 26, 2006 15:23:31
		 	 
			
				Гм. Помогите пожалуйста. Есть строчка:
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
Что я делаю не правельно?
			
		 
		
			
			  koder
			  Окт. 26, 2006 15:35:39
		 	 
			
				В 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)
но первый вариант во всех отношениях лучше
			
		 
		
			
			  slivlen
			  Окт. 26, 2006 15:49:29
		 	 
			
				koder
В sqlite параметры форматируются через “?”.
Такие параметры для подстановки в sqlite2 вроде появились. До этого было ‘%s’.
			
 
		 
		
			
			  koder
			  Окт. 26, 2006 16:03:50
		 	 
			
				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 не помню - очень давно было :).