Python 连接数据库(插入的天坑)

首先我们要下载与连接数据库相关的python库,之前使用的是mysqlbd,但是这次使用失败,后来查阅资料才发现原来是mysqlbd只支持python2,但我使用的是python3,最后使用pymysql这个python库,利用pip install pymysql进行下载,当然这里重申一遍在国内最好使用豆瓣库(https://www.cnblogs.com/ZhangRuoXu/p/6370107.html点击打开链接)。

接着我们在代码中使用pymysql进行python与MYSQL之间的操作:

1.连接数据库(最好进行换行,这样看起来好一点)

def connect_db():
    db = pymysql.connect(
        host='localhost',
        user='root',
        db='chen', # 这个需要注意
        password='**********', # 这个要保密呀
        charset='utf8'
    )

    return db

2.数据库插入(本次只讲下我所做的insert操作)

def insert(input_path, stopwords_path):
    db = connect_db()
    cursor = db.cursor() # 创建一个游标对象

    thu = thulac.thulac() # 这样在这里创建分词工具是为了节约时间

    with open(input_path, 'r', encoding='utf-8') as file_read:
        sentences = csv.reader(file_read)
        weibo_no = 0
        for sentence in sentences:
            user_id = sentence[0]
            reposts_count = sentence[1]
            comments_count = sentence[2]
            source = sentence[3]
            create_time = sentence[4]
            weibo_text = sentence[5]
            segment = thu_seg(weibo_text, stopwords_path, thu)
            if segment == []:
                continue
            weibo_no += 1
            print(weibo_no)
            # 加上ensure_ascii是防止汉字出现乱码
            stringlistvalue = json.dumps(segment, ensure_ascii=False) # 这个是用来存储list数据类型的方法
            # print(stringlistvalue)
            '''
            天坑呀,这个调了一晚上,一定要注意不同元素的分隔情况
            '''
            sql = "INSERT INTO weibo_67 VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (weibo_no, user_id, reposts_count, comments_count, source, create_time, weibo_text, stringlistvalue)
            try:
                # 执行sql语句
                cursor.execute(sql)
                # 执行sql语句
                db.commit()
            except:
                # 发生错误时回滚
                db.rollback()

        db.close() # 关闭数据库的连接

这里想说一声,那就是insert操作的天坑,一定要注意数据的分割符'%s',这样就会好很多。

同理要注意数据库的关闭这种细节。

3.其它

有一点要注意,sql一定要在try块中进行;另外,从数据库中读出的结果是以tuple的形式进行存储。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值