尝试创建sqlalchemy数据库时出现python语法错误

时间:2020-08-01 16:09:25

标签: python flask sqlalchemy

我使用python 3.8在我的PC上创建了一个网站,我不得不将其移至开发服务器上,该服务器使用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 :(得分:0)

尝试以下代码:

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

    def __repr__(self):
        return "Share('" + self.title + "', '" + self.share_date + "')"

答案 1 :(得分:0)

Python 2不支持f字符串,但是您可以使用简单的格式字符串:

return "Member('%s', '%s')" % (self.username, self.email)

答案 2 :(得分:0)

您的主要代码在python3中: 从Python3开始,f字符串是格式化字符串的好方法。因此,您的代码:

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

在您的系统上工作正常。

您的服务器是python2,

f-strings不包含在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支持不同的东西。

如果我不明白您的答案,请发表评论或回复,以便正确获取。谢谢。