python синтаксическая ошибка при попытке создать базу данных sqlalchemy - PullRequest
1 голос
/ 01 августа 2020

Я создал веб-сайт на своем P C, используя python 3.8, и мне нужно переместить его на сервер разработки, который использует python 2.7, который я не могу обновить как его для моего курса, когда я разработал код, я использовал 'f' для печати данных, но я не уверен, как изменить то, что у меня есть, чтобы он работал на python 2.7. ниже приведены части кода, которые мне нужно изменить.

 def __repr__(self):
        return f"Member('{self.username}', '{self.email}')"

    def __repr__(self):
        return f"Share('{self.title}', '{self.share_date}')"

также это то, что я получаю в ответ из командной строки

from flaskproject import db
/home/40317391/submission-project.git-/Blog/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py:834: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "flaskproject/__init__.py", line 19, in <module>
    from flaskproject import routes
  File "flaskproject/routes.py", line 3, in <module>
    from flaskproject.forms import SignUpForm, LoginForm, EditHubForm, ShareForm
  File "flaskproject/forms.py", line 5, in <module>
    from flaskproject.models import Member
  File "flaskproject/models.py", line 20
    return f"Member('{self.username}', '{self.email}')"
                                                      ^
SyntaxError: invalid syntax

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

Python 2 не поддерживает f-строки, но вы можете использовать строки простого формата:

return "Member('%s', '%s')" % (self.username, self.email)
0 голосов
/ 01 августа 2020

Ваш основной код был в python3: Начиная с Python3, f-строки - отличный способ форматировать строки. Поэтому ваш код:

f"Member('{self.username}', '{self.email}')"

отлично работает в вашей системе.

ваш сервер python2,

f-строки не включены в python2. поэтому вы не можете использовать формататор строк. вы должны использовать старый синтаксис:

"Member('" + self.username + "', '{self.email}')"

def __repr__(self):
    return "Member('" + self.username + "', '{self.email}')"
    
    def __repr__(self):
       return "Share('" + self.title + "', '" + self.share_date + "')"

кстати, оба синтаксиса покажут один и тот же результат, только разные версии python, поддерживают разные вещи.

если я не понял ваш ответ, прокомментируйте или ответьте, чтобы я правильно понял. спасибо.

0 голосов
/ 01 августа 2020

Попробуйте этот код:

 def __repr__(self):
        return "Member('" + self.username + "', '{self.email}')"

    def __repr__(self):
        return "Share('" + self.title + "', '" + self.share_date + "')"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...