python 实现数据库中数据添加、查询与更新的示例代码


Posted in Python onDecember 07, 2020

一、前言

最近做web网站的测试,遇到很多需要批量造数据的功能;比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不可能的,此时只能通过python脚本进行自动构造数据;本次构造数据主要涉及到在某个表里面批量添加数据、在关联的几个表中同步批量添加数据、批量查询某个表中符合条件的数据、批量更新某个表中符合条件的数据等。

二、数据添加

即批量添加数据到某个表中。

insert_data.py

import pymysql
import random
import time
from get_userinfo import get_userinfo
from get_info import get_info
from get_tags import get_tags
from get_tuser_id import get_utag


class DatabaseAccess():
  def __init__(self):
    self.__db_host = "xxxxx"
    self.__db_port = 3307
    self.__db_user = "root"
    self.__db_password = "123456"
    self.__db_database = "xxxxxx"
  # 连接数据库
  def isConnectionOpen(self):
    self.__db = pymysql.connect(
      host=self.__db_host,
      port=self.__db_port,
      user=self.__db_user,
      password=self.__db_password,
      database=self.__db_database,
      charset='utf8'
    )
  
  # 插入数据
  def linesinsert(self,n,user_id,tags_id,created_at):
 
    self.isConnectionOpen()
    # 创建游标
    global cursor
    conn = self.__db.cursor()
    try:
      sql1 = '''
      INSERT INTO `codeforge_new`.`cf_user_tag`(`id`, `user_id`, 
      `tag_id`, `created_at`, `updated_at`) VALUES ({}, {}, 
      {}, '{}', '{}');
      '''.format(n,user_id,tags_id,created_at,created_at)
      
      # 执行SQL  
      conn.execute(sql1,)
    except Exception as e:
      print(e)
    finally:
      # 关闭游标
      conn.close()
      self.__db.commit()
      
      self.__db.close()
  
  def get_data(self):
    
    # 生成对应数据 1000条
    for i in range(0,1001):
      created_at = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
      # print(create_at)
      # 用户id
      tuserids = []
      tuserid_list = get_utag()
      for tuserid in tuserid_list:
        tuserids.append(tuserid[0])
      # print(tuserids)
      userid_list = get_userinfo()
      user_id = random.choice(userid_list)[0]
      if user_id not in tuserids:
        user_id=user_id
      
        # 标签id
        tagsid_list = get_tags()
        tags_id = random.choice(tagsid_list)[0]
        self.linesinsert(i,user_id,tags_id,created_at)


if __name__ == "__main__":
  # 实例化对象
  db=DatabaseAccess()
  db.get_data()

二、数据批量查询

select_data.py

import pymysql
import pandas as pd
import numpy as np


def get_tags():
  # 连接数据库,地址,端口,用户名,密码,数据库名称,数据格式
  conn = pymysql.connect(host='xxx.xxx.xxx.xxx',port=3307,user='root',passwd='123456',db='xxxx',charset='utf8')
  cur = conn.cursor()
  # 表cf_users中获取所有用户id
  sql = 'select id from cf_tags where id between 204 and 298'
  # 将user_id列转成列表输出
  df = pd.read_sql(sql,con=conn)
  # 先使用array()将DataFrame转换一下
  df1 = np.array(df)
  # 再将转换后的数据用tolist()转成列表
  df2 = df1.tolist()
  # cur.execute(sql)
  # data = cur.fetchone()
  # print(df)
  # print(df1)
  # print(df2)
  return df2
  conn.close()

三、批量更新数据

select_data.py

import pymysql
import pandas as pd
import numpy as np


def get_tags():
  # 连接数据库,地址,端口,用户名,密码,数据库名称,数据格式
  conn = pymysql.connect(host='xxx.xxx.xxx.xxx',port=3307,user='root',passwd='123456',db='xxxx',charset='utf8')
  cur = conn.cursor()
  # 表cf_users中获取所有用户id
  sql = 'select id from cf_tags where id between 204 and 298'
  # 将user_id列转成列表输出
  df = pd.read_sql(sql,con=conn)
  # 先使用array()将DataFrame转换一下
  df1 = np.array(df)
  # 再将转换后的数据用tolist()转成列表
  df2 = df1.tolist()
  # cur.execute(sql)
  # data = cur.fetchone()
  # print(df)
  # print(df1)
  # print(df2)
  return df2
  conn.close()

以上就是python 实现数据库中数据添加、查询与更新的示例代码的详细内容,更多关于python 数据库添加、查询与更新的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中用于去除空格的三个函数的使用小结
Apr 07 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
Django实现学生管理系统
Feb 26 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
Python把图片转化为pdf代码实例
Jul 28 Python
python 实现压缩和解压缩的示例
Sep 22 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
python 爬取小说并下载的示例
Dec 07 #Python
Python常用GUI框架原理解析汇总
Dec 07 #Python
pycharm中leetcode插件使用图文详解
Dec 07 #Python
使用Python爬取Json数据的示例代码
Dec 07 #Python
如何利用python生成MD5并去重
Dec 07 #Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 #Python
python selenium 获取接口数据的实现
Dec 07 #Python
You might like
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
客运企业隐患排查工作方案
2014/06/06 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
2015员工年度考核评语
2015/03/25 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
运动会通讯稿50字
2015/07/20 职场文书