美文网首页
SqlAlchemy:'users' 中的列 'email' 的

SqlAlchemy:'users' 中的列 'email' 的

作者: RedB | 来源:发表于2021-12-17 00:40 被阅读0次

    最近在学fastapi,使用的数据库是SQL Server
    在FastApi官方教程的SQL Database章节里,有这么一段代码:

    class User(Base):
        __tablename__ = "users"
        id = Column(Integer, primary_key=True, index=True)
        email = Column(String, unique=True, index=True)
        hashed_password = Column(String)
        is_active = Column(Boolean, default=True)
        items = relationship("Item", back_populates="owner")
    
    class Item(Base):
        __tablename__ = "items"
        id = Column(Integer, primary_key=True, index=True)
        title = Column(String, index=True)
        description = Column(String, index=True)
        owner_id = Column(Integer, ForeignKey("users.id"))
        owner = relationship("User", back_populates="items")
    

    我运行之后,总会报错:

    pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]表 'users' 中的列 'email' 的类型不能用作索引中的键列。 (1919) (SQLExecDirectW)")

    经过反复查询,得知对于Column(String, index=True)这种列,必须给String一个长度,比如String(50)就可以解决此问题,否则实际上建表的语句就是nvarchar(max)了。

    相关文章

      网友评论

          本文标题:SqlAlchemy:'users' 中的列 'email' 的

          本文链接:https://www.haomeiwen.com/subject/urdbfrtx.html