无法测试简单的 sqlalchemy 模型数据类:"映射器映射类无法为映射表组装任何主键列"



我有一个简单的Python脚本(models.py(来创建一个Flask SQLAlchemy应用程序和一个看起来像这样的简单SQLAlchemy数据类(此处参考(:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///test.db"
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'user'
user_id: db.Column(db.Integer, primary_key=True)
user_url: db.Column(db.String(2083), unique=True, nullable=False)
username: db.Column(db.String(80), unique=True, nullable=False)
avatar_url: db.Column(db.String(2083), unique=True, nullable=False)

然后,我写了一个非常简单的pytest脚本,看起来像这样,下面是从这里创建Flask SQLAlchemy应用程序的例子:

import pytest
from models import User
from models import db
def test_basic():
db.create_all()
u1 = User(1, "http://testuserurl", "charliebrown", "http://avatarurl")
assert u1.user_id == 1
assert u1.user_url == "http://testuserurl"
assert u1.username == "charliebrown"
assert u1.avatar_url == "http://avatarurl"

该测试在线路"1"上立即失败;从模型导入User";带有消息:

sqlalchemy.exc.ArgumentError:映射器映射的类User->用户无法为映射表"用户"组装任何主键列

我不理解此消息(特别是考虑到我确实在User中指定了primary_key(。请帮忙吗?

尝试使用=而不是:

像这样:

class User(db.Model):
__tablename__ = 'user'
user_id = db.Column(db.Integer, primary_key=True)
user_url = db.Column(db.String(2083), unique=True, nullable=False)
username = db.Column(db.String(80), unique=True, nullable=False)
avatar_url = db.Column(db.String(2083), unique=True, nullable=False)

最新更新