工具脚本分享——Python数据库插入脚本

背景

这边打算分享一个工作中用到的一个mysql数据库的插入脚本,脚本主要用于往数据库中的某张表里面不断插入数据,可以用来生产测试的数据或者模拟数据库IO变化的场景。

环境信息

数据库脚本主要采取Python语言实现,需要额外安装一个python连接数据库的第三方库pymysql,其实换成其他数据库也可以,只要修改一下连接数据库的库就可以了。这个库的安装我是采用的pip方式安装的,可以自行去查一下安装方法,很简单。下面是我windows机器的python环境信息,我python用的是2.7.12,pymysql的版本是0.9.2,可能有点老了~
在这里插入图片描述

工具脚本使用

首先有一些预制的参数,这些参数就包含数据库账号密码,需要使用到的数据库信息,需要根据自己的需求去修改,这边会创建一个临时的表,脚本运行结束会把这张表删除,当然也可以选择不删除,只要注释掉相应删除方法就ok了。
一些内置参数:

#图片路径(根据实际情况修改)示例如下:
#picUrl = "D:\\img.jpg"(windows下)
#picUrl = "/root/index.jpg"(linux下)
picUrl = "D:\\index.jpg"
#连接的数据库服务器主机名(根据实际情况修改)示例如下:
#conhost="127.0.0.1"
conhost="localhost"
#连接的数据库端口号(根据实际情况修改)示例如下:
#conport=3307
conport=3306
#连接的数据库的用户名(根据实际情况修改)示例如下:
#conuser="tom"
conuser="root"
#连接的数据库的密码(根据实际情况修改)示例如下:
#conpasswd="111"
conpasswd="root"
#连接的数据库名(根据实际情况修改)示例如下:
#condb="mydb"
condb="test"

脚本使用很简单,只要使用python解释器执行脚本就可以了,这边会提示要求输入的插入多少条数据到数据库中,用户可以指定数量。
执行命令 python insert_mysql.py
在这里插入图片描述

脚本代码

最后贴一下脚本代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
import time
import string
import random

#图片路径(根据实际情况修改)示例如下:
#picUrl = "D:\\img.jpg"(windows下)
#picUrl = "/root/index.jpg"(linux下)
picUrl = "D:\\index.jpg"
#连接的数据库服务器主机名(根据实际情况修改)示例如下:
#conhost="127.0.0.1"
conhost="localhost"
#连接的数据库端口号(根据实际情况修改)示例如下:
#conport=3307
conport=3306
#连接的数据库的用户名(根据实际情况修改)示例如下:
#conuser="tom"
conuser="root"
#连接的数据库的密码(根据实际情况修改)示例如下:
#conpasswd="111"
conpasswd="root"
#连接的数据库名(根据实际情况修改)示例如下:
#condb="mydb"
condb="test"

class BlobDataTestor:
    def __init__(self):
        #连接数据库
        self.conn = pymysql.connect(host=conhost,port=conport, user=conuser,passwd=conpasswd,db=condb)

    def __del__(self):
        try:
            self.conn.close()
        except:
            pass

    def closedb(self):
        self.conn.close()

    #创建表
    def setup(self):
        cursor = self.conn.cursor()
        cursor.execute("""  
            CREATE TABLE IF NOT EXISTS `Dem_Picture` (  
            `ID` int(11) NOT NULL auto_increment,
            `time` timestamp  ,
            `PicData` mediumblob,
            `RandomNum` varchar(20),
            PRIMARY KEY (`ID`)  
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  
            """)

    #删除表
    def teardown(self):
        cursor = self.conn.cursor()
        try:
            cursor.execute("Drop Table Dem_Picture")
            self.conn.commit()
        except:
            pass

    def testRWBlobData(self):
        # 读取源图片数据
        f = open(picUrl, "rb")
        b = f.read()
        f.close()

        #生成随机数
        s = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))

        # 将数据写入表
        cursor = self.conn.cursor()
        cursor.execute("INSERT INTO Dem_Picture (time,PicData,RandomNum) VALUES (current_timestamp,%s,%s)",((pymysql.Binary(b)),s))
        self.conn.commit()

        # 读取表内图片数据,并写入硬盘文件
        # cursor.execute("SELECT PicData FROM Dem_Picture ORDER BY ID DESC limit 1")
        # d = cursor.fetchone()[0]
        # cursor.close()
        #
        # f = open("C:\\22.jpg", "wb")
        # f.write(d)
        # f.close()

if __name__ == "__main__":

    test = BlobDataTestor()

    try:
        #创建表
        test.setup()
        a = input("Please input the number of insert:")
        for i in range(a):
        #这边注释打开是一直插入图片
        #while 1:
            test.testRWBlobData()
            print "insert success"
            #time.sleep(1)
        #删除表
        test.teardown()
        
    finally:
        test.closedb()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值