#python #sql #python_3x #sql_server
В SQL таблице есть столбец sc_path, в котором содержится запись C:\Users\elebedev\Desktop\Python Мне нужно удалить все строки в таблице содержащие эту запись. from sqlalchemy import create_engine path=r'C:\Users\elebedev\Desktop\Python' con_log = create_engine('mssql+pymssql://log:pass@s1c/base') sql_log = "DELETE FROM python_log WHERE CONVERT(NVARCHAR, sc_path) = '{}' ".format(path) with con_log.begin() as conn: conn.execute(sql_log) Код выполняется, но он не видит эти строки. Как мне кажется, что это из за unicodeescape символа, но это не точно. Подскажите, как быть?
Ответы
Ответ 1
Вы используете raw string - соответственно Python сам "заэкранирует" обратные слеши: In [57]: path=r'C:\Users\elebedev\Desktop\Python' In [58]: path Out[58]: 'C:\\Users\\elebedev\\Desktop\\Python' Если вас интересуют строки, начинающиеся с данной подстроки, то запрос нужно изменить: sql_log = "DELETE FROM python_log WHERE CONVERT(NVARCHAR, sc_path) like CONVERT(NVARCHAR, %s)" parms = (f"{path}%", ) # NOTE: ^ ^ con_log.execute(sql_log, parms)Ответ 2
Удалить как хотелось не получилось. Сделал чуток по другому. Но изначальным вариантом было бы интересней. from sqlalchemy import create_engine path='elebedev' con_log = create_engine('mssql+pymssql://login:passw@server/base') sql_log = "DELETE FROM python_log WHERE CONVERT(NVARCHAR, sc_path) like %s" parms = (f"%{path}%", ) # NOTE: ^ ^ ^ con_log.execute(sql_log, parms)
Комментариев нет:
Отправить комментарий