Использовать юникод или нет в проекте веб-разработки с использованием flask и sqlalchemy

#unicode #python-3.x #flask-sqlalchemy

#юникод #python-3.x #flask-sqlalchemy

Вопрос:

Я работаю над проектом веб-разработки с использованием flask и sqlalchemy orm. Мой пост связан с использованием Unicode при разработке этого приложения. Что я понял до сих пор о юникоде :

  1. Если я хочу, чтобы мое веб-приложение обрабатывало данные на языках, отличных от английского, мне нужно использовать тип данных Unicode для моих переменных. Потому что строковые переменные не могут обрабатывать данные в Юникоде.
  2. Я использую некоторую базу данных, в которой хранятся данные unicode, или беру на себя ответственность за преобразование unicode в raw при сохранении и наоборот при извлечении. Sqlalchemy дает мне возможность настроить автоматическое преобразование в обоих направлениях, так что мне не нужно беспокоиться о них.
  3. Я использую python2.7, поэтому я должен знать о правильной обработке данных в юникоде. Обычные строковые операции с данными в юникоде могут давать ошибки.

Поправьте меня, если какое-либо из приведенных выше предположений неверно.

Теперь мои сомнения или вопросы :

  1. Если я сейчас не буду использовать юникоды, будут ли у меня какие-то проблемы, если я или люди из flask решат перенести на python3?
  2. Я не хочу беспокоиться о том, что мое веб-приложение прямо сейчас работает на разных языках. Я просто хочу сосредоточиться на первом создании приложения. Могу ли я сделать это позже, не используя юникод прямо сейчас?
  3. Если я использую юникод сейчас, то как это влияет на мой код. Должен ли я заменить все вводимые и выводимые строки на unicode или что?
  4. Преобразование юникода при сохранении в базу данных, может ли это быть источником проблем с производительностью?

По сути, я спрашиваю, использовать юникод или нет, объясняя мои потребности и требования из проекта.

Комментарии:

1. Эту статью стоит прочитать, если вы хотите понять, что такое юникод: joelonsoftware.com/articles/Unicode.html

2. спасибо за ссылку. это была хорошая информация.

Ответ №1:

  1. Нет, но убедитесь, что вы отделяете двоичные данные от текстовых данных. Это упрощает перенос.
  2. Проще использовать Юникод с самого начала, но, конечно, вы можете отложить это. Но на самом деле это не очень сложно.
  3. Вы заменяете все, что должно быть текстовыми данными, на Юникод, да.
  4. Только вы делаете множество преобразований действительно огромных объемов текста.

Комментарии:

1. Нужно ли мне помещать префикс ‘u’ в каждую строку или только в те, которые имеют какой-то специальный символ?

2. @codecool: вы помещаете u-префикс it во все строки, которые должны быть в Юникоде, что означает, что все строки должны содержать текст, предназначенный для людей. Для Интернета это означает все, что в конечном итоге будет выглядеть как HTML. Поэтому все, что должно выводиться как HTML, должно иметь префикс u «.

3. Во многих случаях есть даже лучшее решение. В начале вашего файла python добавьте: из будущего импорта unicode_literas, отныне каждая строка будет по умолчанию в юникоде, если вы явно не укажете иное