简体   繁体   English

尽管有它们,但是烧瓶sqlalchemy仍获得未知列错误

[英]flask sqlalchemy getting Unknown column error despite having them

So... I'm trying to commit some sql from flask app inside, and the model code is as follows: 所以...我正在尝试从flask应用程序内部提交一些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

I already have the proper columns in the SQL(as I written these from pre-made tables) it's all correct. 我已经在SQL中有适当的列(因为我是从预制表中写出来的),这都是正确的。

the part committing the sql is as follows: 提交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()

and it's returning this: 它返回此:

sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1054, "Unknown column '_users.id' in 'field list'") [SQL: 'INSERT INTO _players (player_unique_id, user_id, affiliated_crew_id, player_nick, player_highscore, player_badge, player_rank) VALUES (%(player_unique_id)s, _users.id, %(affiliated_crew_id)s, %(player_nick)s, %(player_highscore)s, %(player_badge)s, %(player_rank)s)'] [parameters: {'player_unique_id': 84658, 'affiliated_crew_id': '1', 'player_nick': 'player', 'player_highscore': 0, 'player_badge': None, 'player_rank': 0}] sqlalchemy.exc.InternalError:(pymysql.err.InternalError)(1054,“字段列表”中的“未知列_users.id””)[SQL:'INSERT INTO _players(player_unique_id,user_id,affiliated_crew_id,player_nick,player_highscore,player_badge ,player_rank)VALUES(%(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':None,'player_rank':0}]]

what am I doing wrong here? 我在这里做错了什么? searching didn't help so far... 搜寻至今无济于事...

I was using raw User class to get the User.id , which kept returning None. 我正在使用原始User类来获取User.id ,并一直返回None。

since User was my flask-login 's user class I had to bring my user id by using current_user.id . 由于User是我的flask-login的用户类,因此必须使用current_user.id携带用户ID。

so fixing my user_num init, which had user_num = User.id to user_num = current_user.id fixed everything... 所以修复了我的user_num初始化,将user_num = User.id更改为user_num = current_user.id修复了所有问题...

thank you everyone who looked into the problem... 谢谢大家调查这个问题...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM