问题
当使用 pydantic 的数据类类 sqlalchemy 映射器时,给出一个UnmappedInstanceError
.
执行
# Create a simple user pydantic dataclass
from pydantic.dataclasses import dataclass
@dataclass
class User:
full_name: str
email: str
# Map sqlalchemy to the model above
import sqlalchemy as sa
from sqlalchemy.orm import mapper
import model
metadata = sa.MetaData()
user = sa.Table(
'user', metadata,
sa.Column("id", sa.Integer(), nullable=False, primary_key=True, autoincrement=True),
sa.Column("full_name", sa.String(), nullable=True),
)
user_mapper = mapper(model.User, user)
# Create Sqlalchemy session
from sqlalchemy.orm import sessionmaker
engine = create_engine(database_uri)
Session = sessionmaker(bind=engine)
session = Session()
# adding user from above into the session
user = User(full_name='Hey You', email='who@me.com')
session.add(user)
session.commit()
错误
sqlalchemy.orm.exc.UnmappedInstanceError:类“用户”已映射,但此实例缺少检测。在调用 sqlalchemy.orm.mapper(User) 之前创建实例时会发生这种情况。
pydantic 的数据类中的什么导致了这个问题?使用 python 的基本数据类不会导致问题。