利用python做模拟数据(测试数据),连接数据库和服务器接口,涉及雪花id服务

import datetime
import json

import pymysql
import requests
import snowflake.client
from faker import Faker

#cmd启动snowflake服务:
#snowflake_start_server --address=localhost --port=8910 --dc=1 --worker=1
def create_testers():
    # 创建一个中文Faker实例
    fake = Faker('zh_CN')
    url = "http://192.168.16.178:8081/v1/app/test/submit"

    try:
        # 创建一个数据库连接
        conn = pymysql.connect(host='127.0.0.1',
                               port=3306,
                               user='root',
                               password='root',
                               database='yzpj'
                               )
 
        print('连接mysql成功')

        # 创建一个游标
        cursor = conn.cursor()
        # 创建一个sqL语句
        sql = "INSERT INTO `t_tester`(`id`, `name`, `id_type`, `id_no`, `phone`, `gender`, `birthday`, `education`,`education_years`, `subjective_ses`, `family_monthly_earning`,`status`,`create_time`) values(%s, %s, %s,  %s,%s, %s, %s, %s, %s, '%s', %s, %s, %s)"

        # 循环生成用户数据  生成334次
        for i in range(1, 101):
            for j in range(10):
                # 生成中文姓名
                id = snowflake.client.get_guid()
                name = fake.name()
                id_type = 1
                id_no = fake.ssn()
                phone = fake.phone_number()

                # 从身份证号中提取出生日期
                birth_year = int(id_no[6:10])
                birth_month = int(id_no[10:12])
                birth_day = int(id_no[12:14])
                birthday = datetime.date(birth_year, birth_month, birth_day)

                # 提取性别
                gender = int(id_no[-2])
                if gender % 2 == 0:
                    gender = 2  # 女
                else:
                    gender = 1  # 男

                # 教育程度
                education = fake.random_int(min=1, max=6, step=1)
                education_years = fake.random_int(min=9, max=20, step=1)
                # 社会地位
                subjective_ses = fake.random_int(min=1, max=10, step=1)
                # 家庭收入
                family_monthly_earning = fake.random_int(min=1, max=8, step=1)
                status = 1
                create_time = fake.date_time_between(start_date='-10M', end_date='-9M')

                # 执行sql语句
                cursor.execute(sql, (id, name, id_type, id_no, phone, gender, birthday.strftime('%Y-%m-%d'), education,education_years, subjective_ses, family_monthly_earning, status, create_time.strftime('%Y-%m-%d %H:%M:%S')))
                # 提交事务
                conn.commit()

                answer = {
                    "Q1": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q2": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q3": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q4": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q5": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q6": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q7": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q8": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q9": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q10": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q11": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q12": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q13": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q14": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q15": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q16": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q17": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q18": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q19": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q20": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q21": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q22": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q23": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q24": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q25": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q26": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q27": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q28": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q29": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q30": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q31": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q32": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q33": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q34": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q35": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q36": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q37": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q38": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q39": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q40": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q41": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q42": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q43": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q44": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q45": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q46": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q47": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q48": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q49": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q50": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q51": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q52": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q53": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q54": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q55": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q56": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q57": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q58": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "Q59": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "CH1": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH2": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH3": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH4": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH5": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH6": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH7": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH8": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH9": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "CH10": fake.random_element(elements=('A', 'B', 'C', 'D', 'E')),
                    "DC1": fake.random_element(elements=('A', 'B', 'C')),
                    "DC2": fake.random_element(elements=('A', 'B', 'C')),
                    "DC3": fake.random_element(elements=('A', 'B', 'C')),
                    "DC4": fake.random_element(elements=('A', 'B', 'C')),
                    "DC5": fake.random_element(elements=('A', 'B', 'C', 'D')),
                    "DC6": fake.random_element(elements=('A', 'B', 'C')),
                    "DC7": fake.random_element(elements=('A', 'B', 'C')),
                    "DC8": fake.random_element(elements=('A', 'B', 'C')),
                    "DC9": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K')),
                    "DC10": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "DC11": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "DC12": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "DC13": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G')),
                    "DC14": fake.random_element(elements=('A', 'B', 'C', 'D', 'E', 'F', 'G'))
                }

                json_answer = json.dumps(answer)

                # 提交测评结果
                data = {
                    "userId": str(id_no),
                    "testType": "1101",
                    "testTime": create_time.strftime('%Y-%m-%d %H:%M:%S'),
                    "userAnswer": json_answer,
                    "totalTime": str(fake.random_int(min=90, max=300, step=5)),
                    "stage": "1",
                    "status": "1"
                }
                json_data = json.dumps(data)
                data_post(url, json_data)

            # 提交事务
            # conn.commit()
            print('{}条数据插入成功'.format(i*10))

        # 关闭游标
        cursor.close()
        # 关闭连接
        conn.close()
        print('关闭数据库连接')
    except Exception as e:
        print(e)


def data_post(url, data):
    headers = {"content-type": "application/json;charset=utf-8"}
    try:
        response = requests.post(url=url, headers=headers, data=data)
        if response.status_code == 200:
            print('请求成功')
        else:
            raise Exception('未正常响应请求')
        return data
    except requests.exceptions.RequestException as e:
        print(e)


if __name__ == '__main__':
    create_testers()

前提必须先安装雪花服务

安装Faker库
pip install faker

安装最新版PyMySQL
pip install pymysql

安装雪花算法库
pip install pysnowflake

安装requests库
pip install requests


cmd启动snowflake服务:
snowflake_start_server --address=localhost --port=8910 --dc=1 --worker=1

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器Python连接MySQL数据库的过程需要以下几个步骤。 首先,需要安装Python和MySQL驱动程序。Python的安装可以通过官网下载并按照指引完成安装,MySQL驱动可以使用Python的"pip"指令来安装。安装完成后,就可以在Python中调用MySQL驱动程序来完成对MySQL数据库的访问。 其次,需要创建一个连接对象,来实现Python与MySQL数据库之间的通信。连接对象需要输入MySQL的服务器地址、用户名、密码等信息。通过此连接对象,Python可以通过SQL语句向MySQL数据库发送请求,并获取返回的数据。 在连接对象建立后,Python代码需要使用SQL语句来操作MySQL数据库。常用的SQL语句包括查询数据、插入数据、更新数据和删除数据等操作。 对于查询数据操作,Python代码需要先构建一个SQL语句,然后调用已建立的连接对象发送此SQL语句,MySQL数据库返回查询结果,Python代码再处理数据并将结果输出。 插入、更新和删除数据的操作与查询数据类似,需要构建SQL语句,并通过连接对象发送此SQL语句才能完成操作。 最后,需要关闭连接对象,释放Python与MySQL数据库之间的资源。这个过程可以通过连接对象的"close()"方法实现。 总之,服务器Python连接MySQL数据库是一种常见的数据处理方式,通过上述步骤可以很容易地实现Python与MySQL数据库之间的通信和数据操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值