Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2014 15:48:13

gshalx
Зарегистрирован: 2014-06-22
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

База данных

исправьте пожалуйста синтаксис

import sqlite3
con = sqlite3.connect("tdb.db")
c = con.cursor()
c.execute('''create table bug (id integer primary key, debeti, krediti);
insert into bug values ('555','BUY','jhg');''')
con.commit()
con.close()

Отредактировано gshalx (Июнь 25, 2014 15:57:41)

Офлайн

#2 Июнь 25, 2014 16:07:25

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

База данных

gshalx
1 sql команда в 1 execute методе



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Июнь 25, 2014 16:08:16

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

База данных

Там ещё косяк с типами был.

Офлайн

#4 Июнь 25, 2014 16:29:20

gshalx
Зарегистрирован: 2014-06-22
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

База данных

c.execute('''create table bug (id integer primary key, debeti, krediti)''')
c.execute('''insert into bug values ('1','BUY','jhg');''')

так работает , спасибо
вместо BUY хочу вставить переменную

Офлайн

#5 Июнь 25, 2014 19:02:49

d54wvzc+i5zirs
Зарегистрирован: 2014-05-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

База данных

gshalx
вместо BUY хочу вставить переменную
c.execute('''insert into bug values ('1','{}','jhg');'''.format(variable))

Отредактировано d54wvzc+i5zirs (Июнь 25, 2014 19:03:06)

Офлайн

#6 Июнь 25, 2014 21:44:23

john123
Зарегистрирован: 2013-12-22
Сообщения: 56
Репутация: +  7  -
Профиль   Отправить e-mail  

База данных

Метод подстановки параметров с помощью .format() (или оператор %) лучше не использовать при работе с БД.
Заместо этого воспользуйтесь встроенным в DB-API функционалом для подстановки аргументов.
Это позволит избежать атаки типа SQL-injection. В данном примере Вам это может быть и не пригодится, но на будущее полезно знать

Вот так:

c.execute("insert into bug values ('1', ?, 'jhg')", (variable,))

Именованные параметры:
c.execute("insert into bug values ('1', :var, 'jhg')", {"var": variable})

Отредактировано john123 (Июнь 25, 2014 21:47:34)

Офлайн

#7 Июнь 26, 2014 15:15:03

d54wvzc+i5zirs
Зарегистрирован: 2014-05-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

База данных

john123
В идеале вообще лучше всего использовать ORM

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version