欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django数据库的使用(sqlite) 博客分类: pythondjango pythondjango 

程序员文章站 2024-03-21 12:32:22
...

 

Django支持sqlite3, MySQL, PostgreSQL等数据库,如果不设置,默认使用sqlite数据库

 

 

1,创建项目,名为sqliteTest

     在项目中创建一个应用,名为sqTest

django-admin startproject sqliteTest
cd sqliteTest/
django-admin startapp sqTest

 

 

2,将新建的应用添加到项目下的sqliteTest文件夹中的settings.py中,告诉Django有sqTest这个应用

     setting.py中有一个属性INSTALLED_APPS,将sqTest填入。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    ‘sqTest’
]

 

 

 

3,在sqTest文件夹的models中添加需要的数据的类。比如我需要一些NBA球员的数据,所以我创建一个Player类,里面包含几个属性,分别为姓名,年龄,位置,号码。其中,CharField表示该属性应该为一个字段,IntegerField表示该属性为一个整数。max_length表示最大长度。

class Player(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField()
    position = models.CharField(max_length=10)
    number = models.IntegerField()

 

 

4,在终端中输入

python manage.py makemigrations
python manage.py migrate

 输入之后会自动生成models中的数据表,比如刚才的Player类,此时生成了一个Player表。可以通过终端,django自带的数据库管理后台等方式查看。

 

 

5,终端查看

使用python manage.py shell进入命令行,之后读取Player

>>> Player.objects.all()
<QuerySet []>
>>> Player.objects.create(name="Curry", age=28, position="G", number=30)
<Player: Player object>

 第一次使用Player.objects.all()命令查看Player中的所有数据时,因为没有写入过,所以为空。

使用create创建一个球员Curry,再次查看,出现<Player: Player object>。但是此时打印出来的数据可读性不强,所以退出命令行,在model中添加一个__str__方法,增加可读性。

    def __str__(self):
        return self.name

 此时再次进入命令行,读取Player

>>> from sqTest.models import Player
>>> Player.objects.all()
<QuerySet [<Player: Curry>]>

 输出时出现了数据的名字,可读性增强。

 

 

6,添加数据库,除了上面一种方法,还有两种方法创建。

(1)创建一个Person类的实例,给实例的属性赋值,最后使用save()方法将实例存入数据库。

>>> player = Player(name="Durant")
>>> player.age = 28
>>> player.position = "F"
>>> player.number = 35
>>> player.save()
>>> Player.objects.all()
<QuerySet [<Player: Curry>, <Player: Durant>]>

 (2)使用get_or_create创建,防止重复,如果插入相同的,会失败。如果如果只用create,会使表中有两个相同的数据

>>> Player.objects.get_or_create(name="Curry", age=28, position="G", number=30)
(<Player: Curry>, False)

 

 

7,获取对象

(1),获取该数据表所有数据:

>>> Player.objects.all()

(2),get方法,只能获取一个值,如果获取的值有两个,会失败

>>> Player.objects.get(name="Durant")
<Player: Durant>
>>> Player.objects.get(age=28)
sqTest.models.MultipleObjectsReturned: get() returned more than one Player -- it
 returned 2!

 age为28的有两个,所以第二次获取失败。

 

(3),filter筛选多个

>>> Player.objects.filter(age=28)
<QuerySet [<Player: Curry>, <Player: Durant>

 

相关标签: python django