Как безопасно разбирать сложные строки значений SQL на столбцыPython

Программы на Python
Ответить
Anonymous
 Как безопасно разбирать сложные строки значений SQL на столбцы

Сообщение Anonymous »

Я работаю со строкой, которая представляет значения параметров SQL, и мне нужно разобрать ее на отдельные столбцы. Вот пример такой строки:

Код: Выделить всё

values = "( 14587, '290\'960', 'This is, a, difficult,,, string that uses '' \" and even '' \" , '' '', ''. So it definitely needs to be checked for escape characters.', null )"

Цель — извлечь эти значения в список столбцов, решая различные задачи:
  • Разные Типы данных: значения могут быть целыми числами, строками или нулями.
  • Escape-символы: строки могут содержать экранированные одинарные кавычки (''),
    обратная косая черта или другие специальные символы.
  • Встроенные разделители: запятые
    могут появляться внутри строк, что упрощает разделение по запятые
    невозможны.
  • Сопоставление кавычек. Очень важно правильно сопоставить одинарные кавычки вокруг
    строк.
Я попытался использовать регулярное выражение для разделения запятыми вне кавычек:

Код: Выделить всё

import re

values = "( 14587, '290\'960', 'This is, a, difficult,,, string that uses '' \" and even '' \" , '' '', ''. So it definitely needs to be checked for escape characters.', null )"

# Remove outer parentheses and leading/trailing spaces
cleaned_values = values.strip().strip('()')

# Use regular expression to split by commas outside quotes, accounting for escaped quotes
values_list = re.split(r",(?=(?:[^']*'[^']*')*[^']*$)", cleaned_values)

# Strip whitespace from each part
values_list = [v.strip() for v in values_list]

print(cleaned_values)
for value in values_list:
print(value)
Этот подход в некоторой степени работает, но кажется хрупким и может не обрабатывать все крайние случаи, особенно более сложные строки SQL.
Вопрос:
Каков наилучший и наиболее надежный способ анализа таких строк SQL VALUES в отдельные столбцы, гарантируя следующее:
  • Правильную обработку различных типов данных.
    Экранирование и анализ специальных символов правильно.
  • Сохранение целостности строк со встроенными запятыми или кавычками.
Нужно ли использовать специальный синтаксический анализатор SQL или другой метод будет более подходящим, чем регулярные выражения?

Подробнее здесь: https://stackoverflow.com/questions/791 ... mns-safely
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»