读取文本文件将其插入数据库stu表中
时间: 2023-08-16 13:04:26 浏览: 228
好的,您可以使用以下 Python 代码实现:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('test.db')
c = conn.cursor()
# 创建 stu 表(如果不存在)
c.execute('''CREATE TABLE IF NOT EXISTS stu
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL);''')
# 读取文本文件
with open('test.txt', 'r') as f:
lines = f.readlines()
# 将数据插入 stu 表
for line in lines:
name, age = line.strip().split(',')
c.execute("INSERT INTO stu (name, age) VALUES (?, ?)", (name, age))
# 提交更改并关闭连接
conn.commit()
conn.close()
```
其中,`test.db` 是数据库文件名,`stu` 表包含 `id`、`name` 和 `age` 三个字段,`test.txt` 是需要读取的文本文件。您需要将这些信息替换为您自己的文件名和字段名。
相关问题
建立学生数据库students.db,并创建一张学生记录表students,包含学号pNo、姓名pName、性别pGender、年龄pAge字段。成功插入2条学生记录。读取数据库中的所有记录,并将读取出的记录写入文本文件d:\\stu_info1.txt,再从文本文件中读出,显示在屏幕上(也就是print啦);读取d:\\stu_info2.txt中的学生信息,并把读取到的信息写入数据库,然后再读取数据库中所有的记录显示在屏幕上。 需要的信息自定义。
好的,我知道了。这是一个很典型的数据库操作实例,需要使用Python中的sqlite3模块进行操作。以下是实现该功能的代码:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('students.db')
# 创建学生记录表
conn.execute('''CREATE TABLE students
(pNo TEXT PRIMARY KEY,
pName TEXT NOT NULL,
pGender TEXT NOT NULL,
pAge INT NOT NULL);''')
# 插入学生记录
conn.execute("INSERT INTO students (pNo,pName,pGender,pAge) \
VALUES ('10001', 'Tom', 'Male', 20)")
conn.execute("INSERT INTO students (pNo,pName,pGender,pAge) \
VALUES ('10002', 'Jerry', 'Female', 19)")
# 提交更改
conn.commit()
# 读取所有记录并写入文件
cursor = conn.execute("SELECT pNo, pName, pGender, pAge from students")
with open('d:\\stu_info1.txt', 'w') as f:
for row in cursor:
f.write(str(row[0]) + ',' + row[1] + ',' + row[2] + ',' + str(row[3]) + '\n')
# 从文件中读取并插入到数据库中
with open('d:\\stu_info2.txt', 'r') as f:
for line in f:
pNo, pName, pGender, pAge = line.strip().split(',')
conn.execute("INSERT INTO students (pNo,pName,pGender,pAge) \
VALUES ('{}', '{}', '{}', {})".format(pNo, pName, pGender, pAge))
conn.commit()
# 读取所有记录并显示在屏幕上
cursor = conn.execute("SELECT pNo, pName, pGender, pAge from students")
for row in cursor:
print("Student No: {}, Name: {}, Gender: {}, Age: {}".format(row[0], row[1], row[2], row[3]))
# 关闭连接
conn.close()
```
在这个程序中,我们首先连接到数据库,然后创建了一个名为students的表格,包含学号、姓名、性别、年龄等字段。然后我们插入了两条学生记录,接着读取了所有记录并将其写入了文件d:\\stu_info1.txt中。然后我们从文件d:\\stu_info2.txt中读取学生信息,并将其插入到数据库中。最后我们再次读取数据库中的所有记录,并将其显示在屏幕上。
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()
在您提供的代码中,存在一些语法错误和逻辑错误,可以参考以下代码进行修改:
```python
import sqlite3
conn = sqlite3.connect('Student.db')
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS stu
(id TEXT PRIMARY KEY,
name TEXT,
cla TEXT,
sex TEXT);''')
with open('data.txt', 'r') as f:
lines = f.readlines()
for line in lines:
line = line.strip()
xh = line[0:8]
xm = line[8:-3]
bj = line[-3:-1]
xb = line[-1:]
cur.execute("INSERT INTO stu (id, name, cla, sex) VALUES (?, ?, ?, ?)", (xh, xm, bj, xb))
conn.commit()
cur.close()
conn.close()
```
代码的改动主要包括:
1. 修改了数据库文件名为 `Student.db`;
2. 修改了 `CREATE TABLE` 语句中的主键类型为 `TEXT`;
3. 修改了 `INSERT INTO` 语句中的参数顺序;
4. 修改了读取文件的方式,使用了 `with open()`;
5. 对读取的每一行进行了 `strip()` 操作,去除了多余的空格和换行符;
6. 修改了提取姓名、班级和性别的逻辑,使用了字符串的切片操作。
请注意,以上代码仅供参考,您需要根据自己的具体情况进行修改和调试。
阅读全文