import pymysql, random
import time
def insert(num):
fp = open("test.txt", "r", encoding="UTF-8")
names = fp.read().split('、')
db = pymysql.connect(host="127.0.0.1", user="root", password="你的数据库密码", database="demo", port=3306)
cursor = db.cursor()
s = []
for i in range(num):
index_name = random.randint(0, len(names) - 1)
year = random.randint(2015, 2019)
month = random.randint(1, 12)
day = random.randint(1, 31)
name = names[index_name]
time = ''.join([str(year), '/', str(month), '/', str(day)])
s.append((time, name))
if ((i + 1) % num/100 == 0):
sql = "insert into test(time,name) values "
for c in range(len(s)):
sql += "%s,"
cursor.execute(sql[:-1], s)
db.commit()
s = []
db.close()
if __name__ == "__main__":
starttime = time.time()
print("开始插入......")
insert(1000000)
endtime = time.time()
print("插入成功,总计耗时",endtime - starttime)
load data主要用于导入大量数据的一种sql方法
https://dev.mysql.com/doc/refman/5.6/en/load-data.html
import pymysql, random
import time
import csv
def insert(filename):
db = pymysql.connect(host="127.0.0.1", user="root", password="你的数据库密码", database="demo", port=3306,local_infile=True)
cursor = db.cursor()
sql = '''
LOAD DATA LOCAL INFILE '{}' INTO TABLE test
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(time, name)
'''.format(filename)
cursor.execute(sql)
db.commit()
db.close()
def createCSV(filename, num):
fp = open("test.txt", "r", encoding="UTF-8")
names = fp.read().split('、')
headers = ['time', 'name']
rows = []
for i in range(num):
index_name = random.randint(0, len(names) - 1)
year = random.randint(2015, 2019)
month = random.randint(1, 12)
day = random.randint(1, 31)
name = names[index_name]
time = ''.join([str(year), '/', str(month), '/', str(day)])
rows.append((time, name))
with open(filename, 'w', encoding='utf8', newline='') as f:
writer = csv.writer(f)
writer.writerow(headers)
writer.writerows(rows)
if __name__ == "__main__":
createCSV("test.csv", 1000000)
starttime = time.time()
print("开始插入......")
insert("test.csv")
endtime = time.time()
print("插入成功,总计耗时", endtime - starttime)
如果你报这个错误就是你当前mysql在配置时未设置文件导入功能
解决方案
show global variables like 'local_infile';
set global local_infile=1;
from elasticsearch import Elasticsearch
from elasticsearch import helpers
from elasticsearch_dsl.connections import connections
使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存。
下面是代码作用是将数据从数据库读取出来分批次写入txt文本文件,方便我们做数据的预处理和训练机器学习模型。
import pymssql as MySQLdb #这里是python3 如果你是python2.x的话,import MySQLdb
#数据库连接属性
hst = '188.10.34.18'
usr = 'sa'
passwd = 'p@ssw0rd'
db = 'HistoryTrace'
#总共多少数据
allData = 1674333
复制原数据库moviedb至newmoviedb
设置max_allowed_packet,以保证一条insert语句可以插入足够多的元组
用python生成一条一次插入10000个元组的insert语句
用python生成一个包含100条insert语句的事务,保存至sql文件
用navicat运行该sql文件
至此就可以实现一百万条记录的插入了(我的电脑耗时327s?好像很慢!?)
之后再套一层循环就可以继续完成1千万条记录的插入了。
下面给出可能用到的步骤(如未说明,代码默认为控制
StyleFrame
A library that wraps pandas and openpyxl and allows easy styling of dataframes in excel
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+---
大数据测试,有时候需要造大量数据(造数可以看我另外一篇文章),而且需要经常使用脚本快速插入数据,插入数据一般常用的两种方式,一种是接口,一种是数据库插入。按照正常的逻辑,使用接口造数是最好的方式,因为不需要去关注数据库字段关联的问题,但接口会有瓶颈,需要依赖接口的稳定型以及性能。如果接口的稳定性,性能不行,那就只能是使用数据库插入的方式进行了。
根据业务逻辑,一个流程当作一个事务,...
python是一门开发语言,可以用来写大型项目,也可以用来写脚本,比如自动化脚本,也可以用来写工具。
我们平时做测试,不一定做自动化测试才用去python,做功能测试,也就是点点点,也可以把它用起来。
比如,我现在页面有一个功能,导入的功能,我想测它最大支持多少数据量导入,或者说多大的文件导入,那么我们得在excel中写入很多条数据(导入模板是xls,xl...
CREATE TABLE `vote_record_memory` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`user_id` VARCHAR (20) NOT NULL,
`vote_id` INT (11) NOT NULL,
`group_id` IN...
她那时候还太年轻,不知道命运赠送的礼物,早已暗中标好了价格。
——茨威格
社会在发展,时代在进步。伴随着未曾停息的拥护声和反对声,电竞行业逐渐被接受,被认可,走进大众视野,不再是“不务正业”的代名词。
而随着电竞的发展,游戏直播这一形式也应运而生,直播平台成为了电竞不可分割的一环。其中,斗鱼直播在当年的一片秀场中,...
import time
conn = MySQLdb.connect(host='xx.xx.xx.xx', port=3306, db='test_for_performance', user='root',