склянка sqlalchemy, получающая Неизвестную ошибку столбца несмотря на их наличие - PullRequest
0 голосов
/ 10 мая 2018

Итак ... Я пытаюсь зафиксировать некоторые 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, "Неизвестный столбец '_users.id' в 'списке полей'") [SQL: 'INSERT INTO _players (player_unique_id, user_id, affiliated_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}]

что я здесь не так делаю? поиск пока не помог ...

1 Ответ

0 голосов
/ 10 мая 2018

Я использовал класс User для получения User.id, который возвращал None.

, поскольку User был классом пользователя flask-login, я должен был указать свой идентификатор пользователя, используя current_user.id.

так что исправил мой user_num init, который с user_num = User.id до user_num = current_user.id исправил все ...

спасибо всем, кто заглянул в проблему ...

...