Django IntegerField返回长

发布于 2021-01-29 16:38:40

我想知道为什么,当我从db中获得一个models.IntegerField在models.py中定义的字段时,我得到的long不是int例如我有一个模型EventSchedule

class EventSchedule(models.Model):
    monthly_day = models.IntegerField(default=1)
    ...

在db中

mysql> describe t_event_schedule;
+------------------------+-------------+------+-----+---------+-------+
| Field                  | Type        | Null | Key | Default | Extra |
+------------------------+-------------+------+-----+---------+-------+
| monthly_day            | int(11)     | NO   |     | 1       |       |
...

但是当我创建一个对象并从db中检索回值时,它是 long

>>> e = EventSchedule()
>>> e.monthly_day
1
>>> e.save()
>>> e2 = EventSchedule.objects.get(id=e.id)
>>> e2.monthly_day
1L

我在用

>>> django.VERSION
(1, 2, 1, 'final', 0
>>> platform.python_version()
'2.6.5

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这可能是底层dbapi处理程序的副作用,该处理程序long对于大多数情况都返回:

    >>> import MySQLdb
    >>> db=MySQLdb.connect(db="test")
    >>> c = db.cursor()
    >>> c.execute("Select 1")
    1L
    

    大多数用途的区别是化妆品。有细微的差别,从一个驱动器到另一个,例如sqlite3没有 返回长了相同的查询:

    >>> import sqlite3
    >>> db = sqlite3.connect(":memory:")
    >>> c = db.cursor()
    >>> c.execute("Select 1")
    <sqlite3.Cursor object at 0x7f2c425ae9d0>
    >>> c.execute("Select 1").fetchone()
    (1,)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看