使用django自带的orm模型进行批量数据生成

项目需求:运行简单的python脚本插入批量数据

使用django自带的orm模型进行操作。

首先是在models中定义表的时候定义一个类方法:

模型定义完创建方法后就可以创建脚本了,

随便创建一个py文件就可以。

请注意这个顺序:一定要按照上面的顺序引入 ,否则会出问题

这样配置之后已经能保证环境跑起来没问题了,根据需求自定义要实现的功能就可以。

简单用个例子来说一下我遇到的问题:

我插入的表是django自带的用户表,并且是已经自己扩展过的,所以在文件头上要加上一些东西(我上一片博客写了关于扩展auth_user表所遇到的问题)

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Ecds.settings")
import random
import django
django.setup()

from multiprocessing import Process

from EcdsApp.models import *

# 这里是针对扩展过auth_user表,详情可参照我的另外一篇博客
from django.contrib.auth import get_user_model
from django.contrib.auth.hashers import make_password
User = get_user_model()


def create_user():
    """
        主要的数据插入步骤,对应类方法定义的参数进行传值
    """
    # 若干字段的获取


    # 在这里将用户密码进行加密,否则使用自带的验证方法不能正常的验证
    passwd_hash = make_password(passwd)

    # 调用类方法进行数据创建保存
    user = User.create(passwd_hash, last_login, 0, username, date_joined, passwd)
    user.save()
        

# 提高效率创建了5个进程,好像是快了点
if __name__ == "__main__":
    print('Parent process %s.' % os.getpid())
    processes = list()
    for i in range(5):
        p = Process(target=create_user)
        print('Process will start.')
        p.start()
        processes.append(p)
    for p in processes:
        p.join()
    print('Process end.')

最主要的就是上面的引入,其他的照常操作就可以。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django自带ORM是一个Python对象关系映射工具,它可以让开发者使用Python语言进行数据库操作,而不需要手写SQL语句。 使用Django自带ORM进行数据库操作的步骤如下: 1. 定义模型类:在Django应用的models.py文件中定义模型类,其中每个模型类对应一个数据库表。 2. 进行迁移:运行python manage.py makemigrations命令生成数据库迁移文件,再运行python manage.py migrate命令将模型类映射到数据库表。 3. 进行CRUD操作:使用模型类提供的方法进行数据库的增删改查操作,如: - 创建对象:使用模型类的save()方法或create()方法创建新的数据库记录。 - 查询对象:使用模型类的objects属性进行查询,可以使用filter()、get()、all()等方法进行过滤和排序。 - 更新对象:使用模型类的save()方法或update()方法更新数据库记录。 - 删除对象:使用模型类的delete()方法删除数据库记录。 示例代码: ```python # 定义模型类 from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) price = models.DecimalField(max_digits=5, decimal_places=2) pub_date = models.DateField() is_published = models.BooleanField(default=True) # 创建对象 book = Book(title='Python入门', author='张三', price=29.99, pub_date='2022-01-01') book.save() # 查询对象 books = Book.objects.filter(author='张三').order_by('-price') for book in books: print(book.title, book.price) # 更新对象 book.price = 39.99 book.save() # 删除对象 book.delete() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值