LINUX.ORG.RU

MySQL python

 , ,


0

1

Есть некоторый код на питоне, которые делает сравнение со строчками в БД и выводит нужные данные

#!/usr/bin/python
# -*- coding: utf-8

import MySQLdb
import string

db = MySQLdb.connect(host="localhost", user="root", passwd="bla_bla_bla", db="logdb", charset='utf8')
cursor = db.cursor()

id = "1"
id_user = "12345"
id_prog = "chrome"


sql = """SELECT * FROM agents WHERE id = '1' AND id_user = '12345' AND id_prog = 'chrome'"""
data = cursor.execute(sql)
print data
вопрос как вместо значений в '1', '12345', 'chrome' в запросе вставить данные из переменных выше? С Insert разобрался, а вот такой же метод здесь не проходит.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от visual

а зачем? потом просто db.close, если я вас правильно понял?

sol13 ★★★★★
() автор топика
Ответ на: комментарий от baverman

делал так

sql = """INSERT INTO agents(id, id_user, id_prog)
        VALUES ('%(id)s', '%(id_agent)s', '%(id_prog)s', '%(time_on)s')
        """%{"id":id, "id_agent":id_agent, "id_prog":id_prog}
cursor.execute(sql)

или очень сомнительно?

sol13 ★★★★★
() автор топика
Ответ на: комментарий от Kalashnikov

спасибо, ваш вариант больше нравится чем мой, можно сократить количество кода в скрипте теперь =)

sol13 ★★★★★
() автор топика
Ответ на: комментарий от baverman

Я не понимаю, чем плох такой инсёрт? Вроде по учебнику делал.

Тема то в основном про питон, и как с ним mysql дружить =)

sol13 ★★★★★
() автор топика
Ответ на: комментарий от sol13

тебе намекают, какбы и я на это тоже намекал, на то, что какбэ надо экранировать данные в запрос, иначе получишь дырку в приложении

visual ★★★
()
Ответ на: комментарий от sol13

чем плох такой инсёрт?

Тем, что тебе в данном конкретном случае повезло с данными.

hint: С англовики есть ссылка на русскую страницу.

baverman ★★★
()

тащемта этот ваш mysqldb умеет экранировать и без вас:

cursor.execute(«SELECT * FROM table WHERE field1=%s AND field2=%s», (value1, value2))

redixin ★★★★
()
Ответ на: комментарий от sol13

можно сократить количество кода в скрипте теперь

Маленький трюк для форматирования строк:

>>> id = "1"
>>> id_user = "12345"
>>> id_prog = "chrome"
>>> '{id} {id_user} {id_prog}'.format(**locals())
'1 12345 chrome'
>>> 
baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.