Невозможно определить первичный ключ - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь определить первичный ключ в таблице, используя SQLAlchemy. Проблема в том, что я не могу сделать это из-за следующей ошибки:

ArgumentError: Mapper Mapper|BankAccount|bank_account could not assemble any primary key columns for mapped table 'bank_account'

Мой код такой:

from flask import Flask,request,jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os

# init app
app = Flask(__name__) 
basedir = os.path.abspath(os.path.dirname(__file__))

# Database
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + 
os.path.join(basedir,'db.sqlite')

app.config ['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# init db

db = SQLAlchemy(app)
# init marshmallow
ma = Marshmallow(app)

# class account
class BankAccount(db.Model):
    number_acc: db.Column(db.String(50), primary_key = True)
    owner_acc: db.Column(db.String(50))
    bank: db.Column(db.String(50))
    amount_acc: db.Column(db.Float)

    # constructor of the class
   def __init__(self,number_acc,owner_acc,bank,amount_acc):
       self.number_acc = number_acc
       self.owner_acc = owner_acc
       self.bank = bank
       self.amount_acc = amount_acc

Как вставить первичный ключ в таблицу bank_account?

1 Ответ

0 голосов
/ 24 января 2019

SQLAlchemy Column объекты не относятся к типу аннотации , поэтому вместо них необходимо назначить их как атрибуты класса - см. «Объявление сопоставления» & "Отображение столбцов таблицы" :

class BankAccount(db.Model):
    number_acc = db.Column(db.String(50), primary_key = True)
    owner_acc = db.Column(db.String(50))
    bank = db.Column(db.String(50))
    amount_acc = db.Column(db.Float)

В текущей попытке у вас фактически нет столбцов, которые декларативный может найти во время создания класса, поскольку информация о столбцах скрыта ваннотаций.

...