Форум сайта python.su
Привет всем. Пытаюсь распарсить sql-запрос:
INSERT INTO ‘table’ VALUES(231, ‘asda’, 923, ‘hello’, ‘asd’, 123, ‘one’)
В скобках VALUES() идут значения через запятую. Нужно получить только 5, 6 и 7 значения.
Пока вот что пришло в голву:
VALUES\({4}(+)\)
Но не работает. Буду благодарен, кто подскажет.
Офлайн
не совсем ответ, но есть же http://pypi.python.org/pypi/sqlparse/
Офлайн
Что-то интересное, но я не разобрался, как сделать нужное мне.
Офлайн
import re
query = "INSERT INTO 'table' VALUES(231, 'asda', 923, 'hello', 'asd', 123, 'one')"
part = re.findall("(?<=VALUES\().*(?=\))", query)
values = part[0].split(",")
print values
Офлайн
pasaranax
ты немного не понял , он показал что добавил в базу эти строчки и ему затем надо их вытинуть из БД, также у него может быть этих значений не известно сколько , а нужно только значение 5,6,7
Отредактировано (Июнь 26, 2009 21:56:09)
Офлайн
sypper-pit, нет, распарсить нужно именно cам sql-запрос.
pasaranax, именно так я пока что и сделал. а хотелось бы регулярное выражение именно для получение значений в скобках начиная с 5.
Офлайн
import re
query = "INSERT INTO 'table' VALUES(231, 'asda', 923, 'hello', 'asd', 123, 'one')"
values = re.search("VALUES\((.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?)\)", query)
print values.groups()
Офлайн
тогда прошу прощения :) pasaranax
Офлайн
anyNeTТак пойдет?
Пока вот что пришло в голву:
VALUES\({4}(+)\)
Но не работает. Буду благодарен, кто подскажет.
print re.match('VALUES\((?:([^,\s]+)[,\s]+){5}([^,\s]+)[,\s]+([^,\s]+)\)', "VALUES(231, 'asda', 923, 'hello', 'asd', 123, 'one')").groups()
("'asd'", '123', "'one'")
Офлайн
спасибо =)
Офлайн