Python 批量插入数据库数据

链接数据库

咯咯咯咯咯。。。。(已出过链接文章)

前期准备导入资料

看图:准备所需的数据

在这里插入图片描述

#  自动随机生成坐标
def FrameOfReference(zjy_longitude=None, zjy_latitude=None, radius=None):
    radius_in_degrees = radius / 111300
    coordinates_u = float(random.uniform(0.0, 1.0))
    coordinates_v = float(random.uniform(0.0, 1.0))
    coordinates_w = radius_in_degrees * math.sqrt(coordinates_u)
    coordinates_t = 2 * math.pi * coordinates_v
    coordinates_x = coordinates_w * math.cos(coordinates_t)
    coordinates_y = coordinates_w * math.sin(coordinates_t)
    longitude = coordinates_y + zjy_longitude
    latitude = coordinates_x + zjy_latitude
    # 这里是想保留6位小数
    precision_data = '%.6f' % longitude
    latitude_data = '%.6f' % latitude
    return precision_data, latitude_data


longitude, latitude = FrameOfReference(zjy_latitude=120.7, zjy_longitude=30, radius=1000000)
print(longitude, latitude)
#  生成当前的时间
currenttime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
'''三个zjy_id为相同id,这里要提前把其他的表的ID查出,并提出来(转成列表以便于等下插入数据的时候用)'''

前期准备已完成,看完整代码:

import datetime
import pymysql
import random
import math


class a(object):

    def FrameOfReference(self, zjy_longitude=None, zjy_latitude=None, radius=None):
        radius_in_degrees = radius / 111300
        coordinates_u = float(random.uniform(0.0, 1.0))
        coordinates_v = float(random.uniform(0.0, 1.0))
        coordinates_w = radius_in_degrees * math.sqrt(coordinates_u)
        coordinates_t = 2 * math.pi * coordinates_v
        coordinates_x = coordinates_w * math.cos(coordinates_t)
        coordinates_y = coordinates_w * math.sin(coordinates_t)
        longitude = coordinates_y + zjy_longitude
        latitude = coordinates_x + zjy_latitude
        # 这里是想保留6位小数
        precision_data = '%.6f' % longitude
        latitude_data = '%.6f' % latitude
        return precision_data, latitude_data

    def post(self, charset=None, database=None, port=None, password=None, user=None, host=None):
        open_sql1 = pymysql.connect(host1=host,
                                    user1=user,
                                    password1=password,
                                    port1=port,
                                    database1=database,
                                    charset1=charset)
        #  开启mysql的游标功能,创建一个游标对象
        cur = open_sql1.cursor()
        if not cur:
            raise Exception("数据库连接失败!")
        a = 0
        #  这里是循环一万次
        for s in range(10000):
            #  这里是s每循环一次,这里循环一万次
            for y in range(10000):
                #  每次随机生成坐标
                longitude, latitude = self.FrameOfReference(zjy_longitude=120.7, zjy_latitude=30, radius=1000000)
                #  每次获取当前时间
                currenttime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

                #  准备插入的语句
                '''说明:
                a == 表格中的id
                user_id[a] == 上个sql查询的用户id(或自己可设置,不需要读取其他表)
                longitude == 随机生成的精度
                latitude == 随机生成的纬度
                currenttime == 当前时间的年月日时分秒,格式如:2020-01-09 11:03:06'''

                sql = "INSERT INTO zjy_applet_user_location(id, zjy_applet_user_id, zjy_longitude, zjy_latitude, " \
                      "zjy_create_people_id, zjy_modify_people_id, zjy_create_time, zjy_modify_time, zjy_deleted) " \
                      "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '0')" % (
                      a, user_id[a], longitude, latitude, user_id[a], user_id[a], currenttime, currenttime)
                #  执行sql
                cur.execute(sql)
                #  提交到数据库执行
                open_sql1.commit()
                a += 1
            #  关闭数据库
            open_sql1.close()


if __name__ == "__main__":
    a().post(charset="utf8", database="连接的库名", port="端口号", password="数据库的密码", user="数据库账号", host="数据库的ip")

这就是全部的插入数据的代码!

你可能感兴趣的:(python,数据库,mysql,python,mysql)