Обработать новый символ строки «\ n» в базе данных Sqlite с помощью Python?

У меня есть база данных Sqlite с именем test.db, которая содержит две таблицы с такими структурами:

Таблица 1: ID INTEGER PRIMARY KEY AUTOINCREMENT, Имя varchar (500), Цвет varchar (500)

Таблица 2: ID INTEGER PRIMARY KEY AUTOINCREMENT, Название varchar (500), Запах varchar (500)

Я пытаюсь присоединиться к двум таблицам, используя следующий код

con = sqlite3.connect('test.db') with con: cur = con.cursor() cur.execute("SELECT Color, Smell FROM Table1, Table2 WHERE Table1.Name = Table2.Name") 

Однако я потерпел неудачу, потому что Table1.Name имеет невидимый новый символ строки «\ n», а Table2.Name не работает, поэтому предложение WHERE не работает.

Есть ли способ немного изменить инструкцию SELECT, чтобы Table1.Name = Table2.Name работало? Или мне нужно восстановить таблицу 1, чтобы удалить «\ n», но я не знаю, как это сделать?

  • Импорт CSV-файла в таблицу базы данных sqlite3 с использованием Python
  • sqlite3.ProgrammingError: Неправильное количество привязок. В текущем заявлении используется 1, и имеется 74 поставленных
  • как получить единственный результат из SQLite-запроса в python?
  • Как читать datetime обратно из sqlite как datetime вместо строки в Python?
  • Выбор между полкой и sqlite для действительно большого словаря (Python)
  • Могут ли два процесса одновременно работать в базе данных (: memory :) sqlite database?
  • Удаление строк из базы данных с помощью флагов python?
  • Выполнять команды sqlite3 «dot» из Python или сортировать регистры в утилите командной строки
  • 2 Solutions collect form web for “Обработать новый символ строки «\ n» в базе данных Sqlite с помощью Python?”

    Используйте функцию replace() SQL:

     cur.execute("SELECT Color, Smell FROM Table1, Table2 " "WHERE replace(Table1.Name, '\n', '') = Table2.Name") 

    Вы можете обновить весь столбец « Name Table чтобы удалить символы новой строки:

     cur.execute("UPDATE Table1 SET Name = replace(Name, '\n', '') " "WHERE Name like '%\n%'") 

    Первое, что вам нужно сделать, это исправить ваши таблицы, чтобы данные были правильными для вашего приложения. Похоже, у вас есть данные, такие как Apple\n в столбце name вашей таблицы.

    Запустите этот запрос, чтобы исправить вашу таблицу:

     UPDATE Table1 SET Name = rtrim(Name,'\n') 

    Это приведет к удалению всех \n с правой стороны значения столбца Name в каждой строке, а затем обновит эту строку.

    Редактировать: ответ @ Martijn позволит вашему запросу работать (при условии, что у вас нет той же проблемы с Table2.Name ), но вы действительно должны исправить данные в своих таблицах, чтобы вам не приходилось запоминать эти обходные пути каждый раз.

    Python - лучший язык программирования в мире.