Open mahsiaoko opened 4 years ago
def ranstr(length): CHS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' salt = '' for i in range(length): salt += random.choice(CHS) return salt # 添加一个用户 def add_one(): # 第一种添加方式 user = User(open_id='test_open_id9', nickname='test_nickname9') user.save() # 第二种添加方式 User.objects.create(open_id='test_open_id7', nickname='test_nickname7') # 批量添加数据 def add_batch(): new_user_list = [] for i in range(10): open_id = ranstr(32) nickname = ranstr(10) user = User(open_id=open_id, nickname=nickname) new_user_list.append(user) User.objects.bulk_create(new_user_list) # 批量添加数据 # 查询 def get_one(): user = User.objects.get(open_id='TuhKJZnAz2s5qaWUcZ5UTu8L7AG1ugH7') print(user) # 数据过滤 def get_filter(): users = User.objects.filter(open_id__contains='test_') # open_id__startswith # 大于:open_id__gt # 小于:open_id__lt # 大于等于:open_id__gte # 小于等于:open_id__lte print(users) # 数据排序 def get_order(): users = User.objects.order_by('open_id') print(list) # 连锁查询 def get_chain(): users = User.objects.filter(open_id__contains='12').order_by('open_id') # 增删改查————改 def modify_one(): user = User.objects.get(open_id='test_open_id9') user.nickname = 'modify_username' user.save() # 批量改 def modify_batch(): User.objects.filter(open_id__contains='test_').update(nickname='modify_userhehe') # 删除一个 def delete_one(): User.objects.get(open_id='test_open_id9').delete() # 批量删除 def delete_batch(): User.objects.filter(open_id__contains='test_').delete() # 全部删除 def delete_all(): User.objects.all().delete() # -------------------------------- # 数据库操作函数 # 字符串操作函数 # 字符串的拼接:Concat from django.db.models.functions import Concat from django.db.models import Value def concat_function(): user = User.objects.filter(open_id='test_open_id9').annotate( # open_id=(open_id), nickname=(nickname) # annotate定义一个变量是模型中没有的变量,并且需要输出 screen_name=Concat( Value('open_id22='), 'open_id', Value(','), Value('nickname='), 'nickname' ) )[0] print('screen_name =', user.screen_name) # 字符串长度:Length from django.db.models.functions import Length def length_function(): user = User.objects.filter(open_id='test_open_id9').annotate( open_id_length=Length( 'open_id' ) )[0] print(user.open_id_length) # 大小写函数 from django.db.models.functions import Upper, Lower def case_function(): user = User.objects.filter(open_id='test_open_id9').annotate( upper_open_id=Upper('open_id'), lower_open_id=Lower('open_id') )[0] print('upper_open_id', user.upper_open_id) print('lower_open_id', user.lower_open_id) # 日期处理函数 # Now() 获取当前时间 from django.db.models.functions import Now from apis.models import App def now_function(): # 当前日期之前发布的所有应用 apps = App.objects.filter(publish_date__lte=Now()) for app in apps: print(app) # 时间截断函数 # Trunc from django.db.models.functions import Trunc from django.db.models import Count def trunc_function(): # 打印某一天发布的应用数量 app_per_day = App.objects.annotate(publish_day=Trunc('publish_date', 'day')) \ .values('publish_day') \ .annotate(publish_num=Count('appid')) for app in app_per_day: print('date:', app['publish_day'], ',publish num', app['publish_num']) if __name__ == '__main__': delete_all()