python脚本批量创建数据

背景

	批量创建测试数据,利用python自带的库如faker库,节省大量的人工。

准备工作

1、安装python,参考地址
https://www.runoob.com/python3/python3-install.html

2、设置环境变量(不同操作系统)
PATH=“$PATH:/usr/local/bin/python”

3、查看python版本,说明python环境变量设置成功
在这里插入图片描述

代码示例

from datetime import datetime
import random

import mysql.connector
import uuid
from faker import Faker

# 简体中文:zh_CN
faker = Faker(locale="zh_CN")

# 创建数据库连接
db = mysql.connector.connect(
    host="127.0.0.1",  # 数据库主机地址(根据您的配置进行修改)
    port=3306,
    user="root",  # 用户名(根据您的配置进行修改)
    password="123456",  # 密码(根据您的配置进行修改)
    database="test"  # 数据库名称(根据您的配置进行修改)
)

# 测试办案区depart_code(江苏省下的)
baqCodes = ['098751123','xxhbaq','xxhbaq2','stbaq1','hhjdbaq']
xbdm = [0,1,2,3]
# 处理结果字典
dcResultCodeMap = {}
# 处理结果代码
dcResultCodes = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','99']
dcResultCodeMap['01'] = '刑事拘留'
dcResultCodeMap['02'] = '逮捕'
dcResultCodeMap['03'] = '取保候审'
dcResultCodeMap['04'] = '监视居住'
dcResultCodeMap['05'] = '结束传唤'
dcResultCodeMap['06'] = '移交'
dcResultCodeMap['07'] = '强制隔离戒毒'
dcResultCodeMap['08'] = '社区戒毒'
dcResultCodeMap['09'] = '行政拘留'
dcResultCodeMap['10'] = '罚款'
dcResultCodeMap['11'] = '警告'
dcResultCodeMap['12'] = '批评教育'
dcResultCodeMap['13'] = '不予处罚'
dcResultCodeMap['14'] = '在逃抓获后送押'
dcResultCodeMap['15'] = '结束取保传讯'
dcResultCodeMap['16'] = '排除违法犯罪嫌疑'
dcResultCodeMap['99'] = '其他'

if __name__ == '__main__':
    # 创建游标对象
    cursor = db.cursor()
    cursor.execute("select ASJBH from `test`.`ajjbxx`")
    # 获取所有查询结果
    results = cursor.fetchall()
    # 打印查询结果
    AJBHS = []
    for row in results:
        AJBHS.append(row[0])
    # 获取办案区的父级code
    parentDepartCodeSql = "select d2.depart_code from `sys_depart` d1 left join `sys_depart` d2 on d1.parent_id=d2.id where d1.depart_code=%s"
    # 编写SQL插入语句
    sql = "INSERT INTO `test`.`rcbaqdjxx` (`S_ID`,`PARENT_DEPART_CODE`,`BAZXBH`,`RQRYBH`,`RYLX`,`XYRBH`,`XM`,`XBDM`,`XBMC`,`ZJZLDM`,`ZJZLMC`,`ZJHM`,`MZDM`,`MZMC`,`CSRQ`,`LXDH`,`RYBJ`,`STRQMJXM`,`STRQMJSFZHM`,`RQSJ`,`RQYYDM`,`RQYYMC`,`RQBZ`,`RQSXLXDM`,`RQSXLXMC`,`LQSJ`,`DCCLJGDM`,`DCCLJG`,`CQQXDM`,`CQQXMC`,`LQBZ`,`BJAJBM`,`ASJBH`,`BJJQBM`,`JJDBH`,`S_DJBWJCKDZ`,`S_BLWJCKDZ`,`S_RQJCJLWJCKDZ`,`DT_CREATE_TIME`,`DT_UPDATE_TIME`) VALUES ( %s, %s,%s, %s,%s, %s, %s,%s, %s, %s, %s, %s,%s, %s,%s, %s, %s,%s, %s,%s, %s, %s,%s, %s,%s, %s, %s,%s, %s,%s, %s, %s,%s, %s,%s, %s, %s,%s, %s,%s); "
    for _ in range(10):
        name = faker.name()
        shenfenzheng = faker.ssn()
        phone = faker.phone_number()
        birth = faker.ssn()[6:14]
        num = faker.random_int(min=0, max=4, step=1)
        resultCode = random.choice(dcResultCodes)
        resultCodeName = dcResultCodeMap[resultCode]
        # 获取办公区及父级code
        baqCode = baqCodes[num]
        cursor.execute(parentDepartCodeSql, (baqCode,))
        results = cursor.fetchone()
        parentDepartCode = results[0]

        # 定义插入的值
        values = (
            str(uuid.uuid4()).replace("-", ""),
            parentDepartCode,
            baqCode,
            'P0' + str(uuid.uuid4()).replace("-", ""),
            '01',
            'P' + str(uuid.uuid4()).replace("-", ""),
            name,
            1,
            '男',
            222,
            '居民身份证',
            shenfenzheng,
            '01',
            '汉族',
            birth,
            phone,
            '08',
            '',
            '',
            faker.past_datetime(),
            '01',
            '随访',
            '',
            '',
            '',
            faker.past_datetime(),
            resultCode,
            resultCodeName,
            '',
            '',
            '',
            random.choice(AJBHS),
            random.choice(AJBHS),
            'JQ' + str(uuid.uuid4()).replace("-", ""),
            'JQ' + str(uuid.uuid4()).replace("-", ""),
            '',
            '',
            '',
            datetime.now(),
            datetime.now()
        )
        print(values)
        # 执行插入操作
        cursor.execute(sql, values)


    # 提交事务
    db.commit()
    # 关闭游标和数据库连接
    cursor.close()
    db.close()

代码说明

python操作数据库还需要安装数据库操作类,其他的用到了比如random,faker,uuid等类,可以简化批量创建数据的烦扰。这里也只是简单的用到了一些,python类库很强大,以后的工作当中会继续学习。

执行脚本,生成业务数据

![在这里插入图片描述](https://img-blog.csdnimg.cn/a2343f6fa3444e3087c557298297aac0.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python2.7栅格数据批量转换投影:ProjectRaster_management (in_raster, out_raster, out_coor_system, {resampling_type}, {cell_size}, {geographic_transform}, {Registration_Point}, {in_coor_system}) in_raster 输入栅格数据集。Mosaic Layer; Raster Layer out_raster 要创建的输出栅格数据集。以文件格式存储栅格数据集时,需要指定文件扩展名,具体如下:.bil - Esri BIL, .bip - Esri BIP, .bmp - BMP, .bsq - Esri BSQ, .dat - ENVI DAT,.gif - GIF,.img - ERDAS IMAGINE,.jpg - JPEG,.jp2 - JPEG 2000,.png - PNG,.tif - TIFF,无扩展名 - Esri Grid,以地理数据库形式存储栅格数据集时,不应向栅格数据集的名称添加文件扩展名。 将栅格数据集存储到 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库时,可以指定压缩类型和压缩质量。 Raster Dataset out_coor_system 输入栅格待投影到的目标坐标系。默认值将基于“输出坐标系”环境设置进行设定。该参数的有效值是扩展名为 .prj 的文件。现有要素类、要素数据集、栅格目录(基本上包含了与坐标系相关的所有内容)。坐标系的字符串表示。要生成此类较长的字符串,可向模型构建器添加一个坐标系变量,并根据需要设置该变量的值,然后将模型导出到 Python 脚本。 Coordinate System resampling_type (可选) 要使用的重采样算法。默认设置为 NEAREST。 NEAREST —最邻近分配法 BILINEAR —双线性插值法 CUBIC —三次卷积插值法 MAJORITY —众数重采样法 NEAREST 和 MAJORITY 选项用于分类数据,如土地利用分类。NEAREST 选项是默认设置,因为它是最快的插值法,同时也因为它不会更改像元值。请勿对连续数据(如高程表面)使用 NEAREST 或 MAJORITY。BILINEAR 选项和 CUBIC 选项最适用于连续数据。不推荐对分类数据使用 BILINEAR 或者 CUBIC,因为像元值可能被更改。 cell_size (可选) 新栅格数据集的像元大小。默认像元大小为所选栅格数据集的像元大小。 Cell Size XY geographic_transform (可选) 在两个地理坐标系或基准面之间实现变换的方法。当输入和输出坐标系的基准面相同时,地理(坐标)变换为可选参数。如果输入和输出基准面不同,则必须指定地理(坐标)变换。 有关各个受支持的地理(基准面)变换的详细信息,请参阅位于 ArcGIS 安装目录的 \Documentation 文件夹下的 geographic_transformations.pdf 文件。 Registration_Point(可选)用于对齐像素的 x 和 y 坐标(位于输出空间中)。配准点的工作原理与捕捉栅格的概念类似。通过配准点可指定用于定位输出像元的原点,而不是仅将输出捕捉到现有栅格像元。所有输出像元与该点之间必须间隔一个像元。该点的坐标不必位于一角,也不必落入栅格数据集中。捕捉栅格环境设置参数将优先于 Registration_Point 参数。因此,如果您要设置配准点,请确保尚未设置捕捉栅格。 in_coor_system (可选) 输入栅格数据集的坐标系。Coordinate System

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值