python-django使用ORM模型增删改查CRUD
from weibo.models import WeiboUser as User user_obj = User.objects.get(pk=1) user_obj.pk Out[4]: 1 user_obj.username Out[5]: '张三' user_obj.password Out[6]: '11111'
list_all = User.objects.all() list_all Out[8]: <QuerySet [<WeiboUser: WeiboUser object>, <WeiboUser: WeiboUser object>]> for user in list_all: ...: print(user.username) ...: print(user.password) ...: 张三 11111 quan 2222
通过get方法进行查询,得到的是一个具体的单个信息
使用all方法查询的出来的是一个结果集,不能直接得出信息
需要通过循环才能得到结果的具体信息
查询需要注意的东西是:
可能会出现异常,我们要进行异常的处理
user = User.objects.get(pk=30) Traceback (most recent call last): File "D:\anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 3331, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-18-17983c9c8a02>", line 1, in <module> user = User.objects.get(pk=30) File "D:\anaconda\lib\site-packages\django\db\models\manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "D:\anaconda\lib\site-packages\django\db\models\query.py", line 380, in get self.model._meta.object_name weibo.models.DoesNotExist: WeiboUser matching query does not exist.
try: ...: user = User.objects.get(pk=20) ...: except User.DoesNotExist as e: ...: print("error") ...: error
第二个异常:
注意:使用get语句不出现异常的前提是,数据库只有一条且是唯一的,没有记录不行,查询出多条记录也是会出现异常的
from weibo.models import WeiboUser as User user_obj = User.objects.get(pk=1) user_obj.nickname Out[4]: '零零零零' user_obj.nickname = "全植强" user_obj.nickname Out[6]: '全植强' #####在这里之前,数据库都是没有进行数据的更改的,直到使用save的时候才会更改 user_obj.save()
第一种办法:直接一条代码搞完
user_list = User.objects.all().update(password='2020')
第二种方法:
user_list = User.objects.all() user_list.update(password = '1997') Out[11]: 2 最后输出的2代表的 是做出更改的数据的总数
注意:使用all这种方法进行数据的全部变更,最好再三确认,因为这可能是成百上千的数据更改
最好做以下数据的备份
通过查询方法get得到一个对象,再使用对象里面的delete方法
from weibo.models import WeiboUser as User user_obj = User.objects.get(pk =1) user_obj.username Out[5]: '张三' user_obj.delete() Out[6]: (1, {'weibo.Commont': 0, 'weibo.Friend': 0, 'weibo.WeiboUser': 1})
user_obj = User.objects.get(username='quan') user_obj.username Out[8]: 'quan' user_obj.status = 0 user_obj.save()