
Pavel
17.04.2019
09:50:11

Владимир
17.04.2019
09:51:15

Zombibober
17.04.2019
09:54:22
Привет. Как можно заменить символ в строке по индексу. Вот пример:
sql[-1] = ")"
Если нужен полный контект то вот:
sql = f"""CREATE TABLE {table.get_classname()}("""
for name, colums_type in colums.items():
sql += f"""{name} {colums_type},"""
sql[-1] = ")"

Alex
17.04.2019
09:54:56

Google

Alex
17.04.2019
09:55:11
но... что за херню ты делаешь?

Zombibober
17.04.2019
09:55:20
А можно пример, для полного понимания
Создаю таблицу

Alex
17.04.2019
09:55:45
форматные строки с вызовами метода - отличный способ abuse f-strings

Tishka17
17.04.2019
09:55:48

Alex
17.04.2019
09:56:20

Tishka17
17.04.2019
09:56:30
ты там свой ORM что ли пилишь?

Alex
17.04.2019
09:56:36
нахрен извращаться так?

Zombibober
17.04.2019
09:56:44
АХаха, угу это лаба

Tishka17
17.04.2019
09:56:55
писать ORM не научившись работать со строками - ух

Zombibober
17.04.2019
09:57:04
Я тупой и ничего не знаю. Python бесит меня

Владимир
17.04.2019
09:57:11

Google

Tigran
17.04.2019
09:57:18
не, ну это бан

Alex
17.04.2019
09:57:39

?
17.04.2019
09:57:51

Nikolay
17.04.2019
09:58:14
Вы зачем меня разбудили

Zombibober
17.04.2019
09:58:35
Чувак, мне наплевать на бан, python после java и С++ выглядит очень странным братом-аутистом.Constantine так я и спрашиваю чтобы научится

Марк
17.04.2019
09:58:45
Нет
Че, серьезно? Вроде месяц прошел ужо

Nikolay
17.04.2019
09:59:09

Alex
17.04.2019
09:59:34
если уж так хочется извращаться.

Zombibober
17.04.2019
10:00:22
@cutwater Спасибо, теперь я понял как должно быть

Alex
17.04.2019
10:00:28
оно так быть не должно

Zombibober
17.04.2019
10:00:44
А как должно быть?

Worlak
17.04.2019
10:00:47

Nikolay
17.04.2019
10:01:00
Ф

Alex
17.04.2019
10:01:00

Worlak
17.04.2019
10:01:24

Google

Alex
17.04.2019
10:01:54

Worlak
17.04.2019
10:02:09

Alex
17.04.2019
10:02:15

Worlak
17.04.2019
10:02:23

Zombibober
17.04.2019
10:02:35
@worlak2 Это не select, а create table.

Alex
17.04.2019
10:02:37
Именно
пожалуйста не неси хуйни, ладно?

Worlak
17.04.2019
10:02:55
Или скл инъекций ?

Zombibober
17.04.2019
10:03:39
На селекте используется placeholder

Костя
17.04.2019
10:03:39
спорьте

Worlak
17.04.2019
10:05:23
Изначально это является плохим ходом, потому что данные туда могут попасть разные и при недостаточной обработке будут не лучшие результаты из-за такой *хуйни* которую вы делаете

on my way to Uganda
17.04.2019
10:06:59
спорьте
https://memepedia.ru/wp-content/uploads/2018/01/j8ufbixp.jpeg

Костя
17.04.2019
10:07:09

Alex
17.04.2019
10:10:00
Вы хотите поспорить насчёт овасп топ?
нет, я хочу сказать что ты идиот и не понимаешь разницы между unsafe данными и данными, полученными на основе твоего же кода (как-то структура твоего же класса) и таки если мы говорим про аля ORM и построение запроса, то ты ну никак не уйдешь от генерации запроса строковыми операциями.
другой вопрос в том, что даже данные взятые из кода неплохо бы дополнительно валидировать.
поэтому вместо того чтобы петь мантру - строковые операции плохо, лучше бы включить мозг и научиться понимать смысл.

Tishka17
17.04.2019
10:12:32

Worlak
17.04.2019
10:13:03

Google

Tishka17
17.04.2019
10:13:23
ну передаст, это вылезет в тестах

Worlak
17.04.2019
10:13:28

Tishka17
17.04.2019
10:13:36
вообще конечно имено колонок надо нормализовать, да

Tigran
17.04.2019
10:13:40
даже твой код?
иногда и из кода лучше не надо несекьюрно инъектить, сегодня доверенный, а завтра вызов твоего метода кто-нибудь к своему эндпоинту прикрутил

Worlak
17.04.2019
10:13:40

Tishka17
17.04.2019
10:14:03
но от формата никуда не денешься

Tigran
17.04.2019
10:14:20
ну ясное дело

Alex
17.04.2019
10:14:25
об этом и речь

Tigran
17.04.2019
10:14:34
просто нужно всегда типобезопасный формат делать со всеми эскейпами
или о чём срач?

Tishka17
17.04.2019
10:14:53

Alex
17.04.2019
10:15:04
срачь об безапеляционном заявлении "никогда не используйте форматные строки для построения SQL"

Nikolay
17.04.2019
10:15:24
F

Tishka17
17.04.2019
10:15:26
вообще, create table надо просто руками писать, а не долбить генерацию

Worlak
17.04.2019
10:15:26
но от формата никуда не денешься
моя ошибка что сказал про формат не рассмотрев до конца запрос, мельком пока листал. Показалось что это селект или како либо инсерт. Поэтому сделал замечание, что такие вещи в формат не стоит пихать

Tigran
17.04.2019
10:15:32
ну, без слоя эскейпинга и правда не надо использовать

Worlak
17.04.2019
10:15:36

Tigran
17.04.2019
10:16:00
я думаю, вы к словам придираетесь, короч

Tishka17
17.04.2019
10:17:11
вообще я склонен согласиться - нефиг юзать формат для SQL.

Google

Alex
17.04.2019
10:21:39
вообще я склонен согласиться - нефиг юзать формат для SQL.
тут есть нюансы, для новичков - да это табу.
но ты никуда не денешься от формата в том или ином виде, например если тебе нужно собрать динамический запрос руками с идентификатормами получаемыми программно.
и если, к примеру, psycopg2 тебе предоставляет безопасный query builder, который по факту тот же формат на стероидах, то другие движки - нет
если ты берешь те же данные из константы рядом, я не вижу проблемы использовать формат.

Tishka17
17.04.2019
10:22:18
у меня щас в проекте
db.query(some_wrapper%(base_query % condition), (blabla, …))

Alex
17.04.2019
10:23:33
ты в первую очередь должен понимать откуда данные приходят.

Worlak
17.04.2019
10:23:55

Alex
17.04.2019
10:24:20
и если у тебя программист-зловред в команде засунул SQL-inj намеренно, то ты ну никак от этого не защитишься, кроме код-ревью и тестов.
сорян, за грубость в отношении безапеляционных заявлений.

Worlak
17.04.2019
10:26:04

brestows
17.04.2019
10:26:55
Подскажите, а нормальная ли практика вьюхи которые должны быть закрыть паролем наследовать от LoginRequiredMixin ?
или есть более адекватное решение

Alex
17.04.2019
10:27:24

Tishka17
17.04.2019
10:27:31
я ж предлагал мидлварю
или не тебе?

brestows
17.04.2019
10:27:38
Django
я просто читаю