20210150章明一班男 20210123李悦灵二班女 20210913欧阳紫玉一班女 读取文本文件data.txt,将学号、姓名、班级、性别插入到数据库Student.db的stu表中 import salite3 con = sqlite3.connect('student.db' cur = con.cursor0) cur.execute('create table if not exists stus(id primary key,name text,cla text,sex text)fr = open(dat.txt',r) for line in frreadlines(): L=len(line) if line[-1]=='n' L=L-1line=line[o:L]xh=line[0:8] xm=line[8:L-3] bj=line[L xb=line[L-1:]print(xh,xm,xb) values(?,?,?,?),(xh,xm,bj,xb))cur.execute(insert intofr.close()con.commit0)cur.close() con.close()
时间: 2024-02-09 10:13:16 浏览: 25
你的代码有一些语法错误和逻辑错误,我稍微修改一下:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('student.db')
cur = conn.cursor()
# 创建表格
cur.execute('create table if not exists stus(id primary key, name text, cla text, sex text)')
# 读取文件并插入数据
with open('data.txt', 'r') as fr:
for line in fr.readlines():
# 去除换行符
line = line.strip()
# 解析数据
xh = line[0:8]
xm = line[8:-3]
bj = line[-3:-1]
xb = line[-1]
print(xh, xm, bj, xb)
# 插入数据
cur.execute('insert into stus(id, name, cla, sex) values(?,?,?,?)', (xh, xm, bj, xb))
# 提交事务并关闭连接
conn.commit()
cur.close()
conn.close()
```
注意,这里假设数据文件中每一行的格式都是“学号姓名班级性别”,且学号为前8个字符,姓名为8个字符之后到倒数第4个字符,班级为倒数第4个字符到倒数第2个字符,性别为最后一个字符。如果实际情况不同,需要相应地修改代码。另外,插入数据时使用了参数化查询,避免了SQL注入的风险。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)