【问题标题】:Sqlalchemy: Why does querying with a string primary key work for an primary key of type integer?Sqlalchemy:为什么使用字符串主键查询整数类型的主键?
【发布时间】:2021-06-10 18:38:00
【问题描述】:

我的模型是这样定义的,所以主键是一个整数

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100), nullable=False, unique=True)
   email = db.Column(db.String(100), nullable=False)
   password_hash = db.Column(db.String(200), nullable=False)

这两个都正确返回用户:

User.query.get("1")
User.query.get(1)

为什么我可以使用字符串来查询整数列? 来自文档:表示主键的标量、元组或字典。 -> 字符串计数 作为标量?我不确定标量在这种情况下的含义。

我正在使用 MySql 数据库。

【问题讨论】:

    标签: python mysql sqlalchemy flask-sqlalchemy primary-key


    【解决方案1】:

    这会自动生成mysql,见manual

    当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。一些转换是隐式发生的。例如,MySQL 会根据需要自动将字符串转换为数字,反之亦然。

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      相关资源
      最近更新 更多