【问题标题】:flask sqlalchemy getting Unknown column error despite having them尽管有它们,但烧瓶 sqlalchemy 仍出现未知列错误
【发布时间】:2018-10-20 09:55:00
【问题描述】:

所以...我正在尝试从flask app里面提交一些sql,模型代码如下:

class User(UserMixin, db.Model):
    __tablename__ = '_users'

    id = db.Column(db.Integer, primary_key=True)
    user_email = db.Column(db.VARCHAR(50), nullable=False, unique=True)
    user_reg_date = db.Column(db.TIMESTAMP, nullable=False)
    last_login = db.Column(db.TIMESTAMP, nullable=True)
    passwd = db.Column(db.VARCHAR(80), nullable=True)
    social_id = db.Column(db.VARCHAR(80), nullable=True, unique=True)

    def __init__(self, user_email, passwd, social_id):
        self.user_email = user_email
        self.user_reg_date = current_time()
        self.passwd = passwd
        self.social_id = social_id


class Player(db.Model):
    __tablename__ = '_players'

    id = db.Column(db.Integer, primary_key=True)
    player_unique_id = db.Column(db.Integer, unique=True)
    user_id = db.Column(db.Integer, db.ForeignKey('_users.id'))
    affiliated_crew_id = db.Column(db.Integer, db.ForeignKey('crew.id'))
    player_nick = db.Column(db.VARCHAR(50), unique=True)
    player_highscore = db.Column(db.Integer)
    player_badge = db.Column(db.VARCHAR(100))
    player_rank = db.Column(db.Integer)

    def __init__(self, player_unique_id, user_id, affiliated_crew_id
                 , player_nick):
        self.player_unique_id = player_unique_id
        self.user_id = user_id
        self.affiliated_crew_id = affiliated_crew_id
        self.player_nick = player_nick
        self.player_highscore = 0
        self.player_badge = None
        self.player_rank = 0

我已经在 SQL 中有正确的列(因为我从预制表中编写了这些列)它都是正确的。

提交sql的部分如下:

player = Player(player_unique_id=00000, user_id=user_num, affiliated_crew_id=crew_id
                , player_nick=nick)
db.session.add(player)
db.session.commit()

它返回这个:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1054, "Unknown column '_users.id' in 'field list'") [SQL: 'INSERT INTO _players (player_unique_id, user_id, associated_crew_id, player_nick, player_highscore, player_badge, player_rank) 值 (%(player_unique_id)s, _users.id, %(affiliated_crew_id)s, %(player_nick)s, %(player_highscore)s, %(player_badge)s, %(player_rank)s)'] [参数:{'player_unique_id':84658,'affiliated_crew_id':'1','player_nick':'player','player_highscore':0,'player_badge':无,'player_rank':0}]

我在这里做错了什么?到目前为止搜索没有帮助......

【问题讨论】:

  • 如果你尝试在你的 _users init 函数中添加 Id 怎么办 self.id=id

标签: python flask sqlalchemy flask-sqlalchemy flask-login


【解决方案1】:

我使用原始 User 类来获取 User.id,它一直返回 None。

因为User 是我flask-login 的用户类,所以我必须使用current_user.id 来提供我的用户ID。

所以修复了我的 user_num init,它有 user_num = User.id 到 user_num = current_user.id 修复了一切......

感谢所有调查此问题的人...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 2017-05-02
    • 2015-12-26
    相关资源
    最近更新 更多