美文网首页
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