开始使用Python3了,使用Python3最先写的是一个小的脚本,实现的需求就是,在数据库中插入1000条数据,方便进行接口测试。这1000条数据并不是随便插入的,比如说订单号,首先这个订单号要存储于其另一个表中,而且在另一个表中的某个字段也要符合要求。总之,并不是操作单个表,而是3个表的操作。我想还是用Python3吧。
python3连接mysql数据库的包有一些,python2和python3是不同的包,用python3时,使用的是pymysql这个包。它的菜鸟教程在这里,在这里可以查看出操作数据库的种种方法。
pip3 install PyMySQL
伪造数据常用代码
具体的使用数据库的方法,查看那个连接就好了,记录下,我的其他增加的代码,如插入订单号
order=random.sample(range(10,20),10)
这个代码可以生成10个10~20之间的数字,而且不是重复的。
伪造订单时间
a=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
还有就是伪造11位的手机号,一行代码搞定
phone_number=str(random.choice(['139','188','185','136','158','151'])+"".join(random.choice("0123456789") for i in range(8)))
连接数据库的示例中
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
【localhost】是数据库的地址,【testuser】是用户名,【test123】是密码,【TESTDB】是库名,注意是库名,不是自己定义的名字。一般打开数据库后,映入眼帘的就是以古希腊众神命名的数据库,数据库中有表。
但是如果只填入这个还不行,会有这样的错误
出现这样的错误,需要在其中添加charset='utf8'
,具体回答可看此
关于数据的操作还有要注意的是【UPDATE】是用来更改数据库表中的字段的内容的,而【INSERT】是插入数据,在空白处添加数据的。
批量写入数据库
还有关于批量写入数据,不要用for循环来频繁操作数据库,批量写入数据,可以用executemany
# 批量插入executemany
def insert_by_many(table):
nrows = table.nrows
param=[]
for i in xrange(1,nrows):
# 第一列username,第二列salt,第三列pwd
param.append([table.cell(i, 0).value, table.cell(i, 1).value, table.cell(i, 2).value])
try:
sql = 'INSERT INTO user values(%s,%s,%s)'
# 批量插入
cur.executemany(sql, param)
conn.commit()
except Exception as e:
print e
conn.rollback()
print '[insert_by_many executemany] total:',nrows-1
其中param的list字段,executemany会自动遍历。此方法是从这篇文章看到的Python MySQLdb 循环插入execute与批量插入executemany性能分析
参考文章
'latin-1' codec can't encode character '\u2013' in position 637: ordinal not in range(256)
Python3 MySQL 数据库连接
Python MySQLdb 循环插入execute与批量插入executemany性能分析
网友评论