首页 > django怎么从数据库取数据?

django怎么从数据库取数据?

假如我数据库表有一个id name message 三个字段 我取到了id 那么name 和 message会不会也跟着取出来啊? 我主要想问一下 怎么取出全部数据并把这些数据赋值给一个变量?


在python里面一切皆对象,使用Django的ORM模型直接可以把要查询的对象取出来。
如果你数据库中表名为MyUser,里面有三个字段id name message,表里有三行数据

id name message
1  user1 message1
2  user2 message2
3  user3 message3

如果你想全部取出可以

users = MyUser.objects.all()

你现在的变量user已经是包含三行数据,下面代码将依次遍历三个用户,输出相应数据。

for user in users:
    print user.id, user.name, user.message

PS:遇到问题先查谷歌或者 官方文档 ,如果解决不了再提问,对你以后的成长很有帮助的。如果是刚入门的话,可以读官方文档的Tutorials.这里有中文版


建议看看文档,或者先看djangobook虽然版本有点老


Django支持ORM模型,你对一个数据表的操作可以抽象成对一个对象的的操作。
举个例子,在models.py下定义一个表,这个表的id字段是自动生成的,这样定义一个有id,url和status字段的表

class Url(models.Model):
    url = models.URLField(unique=True)
    status = models.BooleanField(default=False)

    def __str__(self):
        return self.url

通过Filter和get方法可以进行查询,下面查询一个url值为u的数据,两个方法都返回一个符合查询要求的Url对象的列表。他们的区别是如果为空的话Filter返回的是空列表,而get返回的是空error。

  kw = Url.objects.get(url=u)
  kw = Url.objects.filter(url=u)

取出全部数据可以用all方法来操作,相当于select * from tables

kw = Url.object.all()

对于获得的对象列表kw,可以进行迭代来获取每一个对象,并通过对象变量操作的方法获得每个字段的值。

for u in kw:
    url = u.url
    status = u.status
    print("%s : %s" % (url, status))

  1. 文档上都说了,我想翻文档的效率并不比求人低


怎么会问这种问题,这种问题直接查文档更清楚


这取决于你通过orm怎么构造sql语句
比如你的表是user,你建了一个model叫User

users = User.objects.all()
就相当于select * from user

users = User.objects.all().values('id')
就相当于select id from user
【热门文章】
【热门文章】