一个mysql题目:将txt文档里的数据导入数据库的表内

写操作练习:
创建数据库 dict,数据库中创建数据表 words 字段为 : id word mean
编写一个程序,将dict.txt单词本中的单词存储到这个数据表里
其中dict,txt文件的路径在’D:/wjs/第二阶段/01-MySQL/doc/dict.txt’
在库为exercise下创建名为words的表
create table words(
id int primary key auto_increment,
word varchar(30),
mean varchar(512)
);

import pymysql
class Dict:
    def __init__(self):
        self.db=pymysql.connect(
            host='localhost',
            port=3306,
            user='root',
            password='123456',
            database='exercise',
            charset='utf8'
        )
        self.cur=self.db.cursor()
    def get_dict(self):
        data=[]
        with open('D:/wjs/第二阶段/01-MySQL/doc/dict.txt','r') as file:
            for line in file:
                tmp=line.split(' ',1)
                data.append((tmp[0],tmp[1].strip()))
        return data

    def sql01(self):
        try:
            sql='insert into words (word,mean) ' \
                'values (%s,%s)'
            data=self.get_dict()
            self.cur.executemany(sql,data[:5])
        except Exception as e:
            print(e)
            self.db.rollback()
        else:
            self.db.commit()

    def close(self):
        self.cur.close()
        self.db.close()

if  __name__=='__main__':
    dict=Dict()
    dict.sql01()
    dict.close()

ps:需要注意的点是,data列表被定义在get_dict函数内部而不是构造函数内部的原因是为了将其定义为一个局部变量。这样做的目的是为了在get_dict函数结束时清除变量,并且仅在需要时创建和使用它。

如果将data=[]定义为构造函数__init__中的实例变量,那么在每次创建Dict对象时都会创建一个新的空列表。这样可能会导致内存浪费,因为每个实例都会单独保存一个空列表。

另外,由于get_dict函数是用于从文件中读取数据并转换成元组的逻辑,因此将data=[]放在函数内部更加合适,以便将逻辑封装在一个函数中,并在需要时返回结果。这样也增加了代码的可读性和维护性。

总之,将data=[]定义在get_dict函数内部是一个更好的选择,因为它更符合代码的逻辑和设计需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值