批量写xml和添加数据到数据库

目录

1、批量添加数据到数据库

1.1、Python与sqlite数据库连接

1.2、单条添加数据到数据库

1.3、批量添加数据到数据库

2、批量创建xml

2.1、创建xml

2.2、批量xml


1、批量添加数据到数据库

1.1、Python与sqltie数据连接

       连接方法

import sqlite3
sqlite3.connect(db文件路径)

1.2、单条添加到数据库

        第一、先建立连接

#导入sqlite3库
import sqlite3

#建立Python与user.db连接
con=sqlite3.connect("user.db")

        第二、执行sql语句

#创建cursor光标对象
cur=con.cursor()

#执行sql语句方法
cur.execute("insert into user.db values (1,"张三",18,"male")")

        第三、关闭光标对象,连接对象

#关闭光标对象
cur.close()

#关闭连接对象
con.close()

1.3、批量添加数据到数据库

import sqlite3,random,os
#创建连接
con=sqlite3.connect("users.db")

#创建cursor光标对象
cur=con.cursor()

#如果表存在就删除
cur.execute("drop table if exists users")

#执行sql创建表语句
cur.execute("create table users (id INTEGER primary key Autoincrement,"
            "name varchar(10),age int(10),sex varchar(10))")

#sql语句,?是防止sql注入,这我也是从书中看到的
sql="insert into users values (Null,?,?,?)"

#创建了一个随机四个字母的随机名字的函数
def randomname():
    s=""
    for i in range(4):
        str=chr(random.randint(65,90))#这是随机65到90的数字,再根据ascii码转化为字母
        s=s+str
    return s
try:

    #批量执行插入语句
    for i in range(30):
        ages=random.randint(18,25)#年龄随机在18到25
        sexs=random.choice(["male","female"])#性别随机男和女
        cur.executemany(sql,[(randomname(),ages,sexs)])#执行sql插入语句

    #提交,执行事务,用于处理大数据的操作
    con.commit()
    print("添加数据成功")

except BaseException as e:

    #打印异常
    print(e)

    #执行返回操作
    con.rollback()
    print("添加数据失败")

finally:

    #关闭光标连接
    cur.close()

    #关闭sql连接
    con.close()

        可以通过执行sql查询语句后,在使用cur.fetchall()获取结果并打印出来,打印情况如下

[(1, 'XNBM', 24, 'male'), (2, 'RLZT', 18, 'male'), (3, 'VZNY', 24, 'male'), (4, 'CZWU', 24, 'male'), (5, 'VYJD', 24, 'female'), (6, 'FGJN', 18, 'female'), (7, 'AOGL', 21, 'female'), (8, 'LOFZ', 21, 'female'), (9, 'EINJ', 23, 'female'), (10, 'VNXX', 25, 'male'), (11, 'PIAO', 22, 'female'), (12, 'JSAQ', 21, 'female'), (13, 'TCET', 22, 'female'), (14, 'FXRS', 22, 'male'), (15, 'MPCW', 23, 'female'), (16, 'BDWC', 18, 'female'), (17, 'BNGT', 25, 'male'), (18, 'MAGW', 19, 'male'), (19, 'ZYCI', 19, 'female'), (20, 'BJHV', 19, 'female'), (21, 'IQLR', 22, 'male'), (22, 'FQHN', 21, 'male'), (23, 'UVFR', 19, 'male'), (24, 'YJOM', 25, 'male'), (25, 'YDXZ', 20, 'male'), (26, 'JVFF', 23, 'male'), (27, 'YJNA', 25, 'male'), (28, 'AUVO', 23, 'female'), (29, 'YYRF', 22, 'female'), (30, 'EUFF', 19, 'female')]

2、批量创建xml

2.1、创建xml

        第一、首先创建文档对象模型

import xml.dom.minidom,random
#首先创建文档对象
doc=xml.dom.minidom.Document()

        第二、首先创建元素对象模型

#在创建节点或者叫元素对象
peoples=doc.createElement("Peoples")

        第三、给节点添加属性

#添加people节点的属性,第一个代表属性名,第二个代表属性值
people.setAttribute("address","深圳")

        第四、给节点添加文本内容

#给Name节点添加文本节点,文本节点内容为张三
name.appendChild(doc.createTextNode("张三"))

        第五、关联各个节点

#这是将doc节点下面添加peoples节点
doc.appendChild(peoples)

        第六、将内容写入xml

"""
indent是指第一行距离第二行的水平距离,
addindent是指除了一二行以外的其他行之间的水平距离
newl是指每一行之间的垂直距离
encoding是指编码格式
"""
f=open("people.xml","w")
doc.writexml(indent="\t", addindent="\t", newl="\n",writer=f,encoding="gbk")

           完整例子代码如下

#coding=utf-8
import xml.dom.minidom,random
#首先创建文档对象
doc=xml.dom.minidom.Document()

#在创建节点或者叫元素对象
peoples=doc.createElement("Peoples")
people=doc.createElement("People")

#添加people节点的属性,第一个代表属性名,第二个代表属性值
people.setAttribute("address","深圳")
name=doc.createElement("Name")

#给Name节点添加文本节点,文本节点内容为张三
name.appendChild(doc.createTextNode("张三"))

age=doc.createElement("Age")
age.appendChild(doc.createTextNode("23"))

sex=doc.createElement("Sex")
sex.appendChild(doc.createTextNode(str(random.choice(["male","female"]))))

#将文档对象关联一级节点peoples,一级节点关联二级节点people,二级节点关联三级节点name,age,sex
doc.appendChild(peoples)
peoples.appendChild(people)
people.appendChild(name)
people.appendChild(age)
people.appendChild(sex)

#这是将内存内容写入外存xml中
"""
indent是指第一行距离第二行的水平距离,
addindent是指除了一二行以外的其他行之间的水平距离
newl是指每一行之间的垂直距离
encoding是指编码格式
"""
f=open("people.xml","w")
doc.writexml(indent="\t", addindent="\t", newl="\n",writer=f,encoding="gbk")

        创建xml效果图如下

<?xml version="1.0" encoding="gbk"?>
	<Peoples>
		<People address="深圳">
			<Name>张三</Name>
			<Age>23</Age>
			<Sex>male</Sex>
		</People>
	</Peoples>

 

2.2、批量创建xml

        在创建xml基础上,加上循环即可

#coding=utf-8
for i in range(10):
    import xml.dom.minidom, random

    # 首先创建文档对象
    doc = xml.dom.minidom.Document()

    # 在创建节点或者叫元素对象
    peoples = doc.createElement("Peoples")
    for j in range(10):
        people = doc.createElement("People")
        name=doc.createElement("Name")
        #给Name节点添加文本节点,文本节点内容为张三
        name.appendChild(doc.createTextNode(f"{random.randint(2,5)}"))

        age=doc.createElement("Age")
        age.appendChild(doc.createTextNode(f"{random.randint(18,24)}"))

        sex=doc.createElement("Sex")
        sex.appendChild(doc.createTextNode(str(random.choice(["male","female"]))))

    #将文档对象关联一级节点peoples,一级节点关联二级节点people,二级节点关联三级节点name,age,sex
        people.appendChild(name)
        people.appendChild(age)
        people.appendChild(sex)
        peoples.appendChild(people)
    doc.appendChild(peoples)

    #这是将内存内容写入外存xml中
    """
    indent是指第一行距离第二行的水平距离,
    addindent是指除了一二行以外的其他行之间的水平距离
    newl是指每一行之间的垂直距离
    encoding是指编码格式
    """
    f=open(f"people{i}.xml","w")
    doc.writexml(indent="\t", addindent="\t", newl="\n",writer=f,encoding="gbk")

        给你们看下单个xml文件效果,如下

<?xml version="1.0" encoding="gbk"?>
	<Peoples>
		<People>
			<Name>3</Name>
			<Age>21</Age>
			<Sex>male</Sex>
		</People>
		<People>
			<Name>3</Name>
			<Age>21</Age>
			<Sex>male</Sex>
		</People>
		<People>
			<Name>3</Name>
			<Age>18</Age>
			<Sex>female</Sex>
		</People>
		<People>
			<Name>3</Name>
			<Age>22</Age>
			<Sex>female</Sex>
		</People>
		<People>
			<Name>2</Name>
			<Age>20</Age>
			<Sex>female</Sex>
		</People>
		<People>
			<Name>5</Name>
			<Age>24</Age>
			<Sex>female</Sex>
		</People>
		<People>
			<Name>2</Name>
			<Age>18</Age>
			<Sex>male</Sex>
		</People>
		<People>
			<Name>3</Name>
			<Age>18</Age>
			<Sex>male</Sex>
		</People>
		<People>
			<Name>2</Name>
			<Age>21</Age>
			<Sex>female</Sex>
		</People>
		<People>
			<Name>2</Name>
			<Age>20</Age>
			<Sex>male</Sex>
		</People>
	</Peoples>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值