导出mysql内数据 python建倒排索引
根据mysql内数据,python建倒排索引,再导回mysql内。
先把mysql内的数据导出,先导出为csv文件,因为有中文,直接打开csv文件会乱码,再直接改文件的后缀为txt,这样打开时不会是乱码,在第一行输入列名

保存时选另存为,将编码格式改为utf-8
这是建倒排索引时的代码(sort列没有空格和逗号) 运行是会报一个warning,但是结果没问题,代码结合了网络搜索结果,和我自己的修改,引用自:
https://blog.csdn.net/luoganttcc/article/details/89843699
https://github.com/luogantt/recommend_sys/blob/master/Inverted_index/invert_indexx.py 多谢分享!
from pprint import pprint
import pandas as pd
df = pd.read_csv("C:/Users/caiweiwen/Desktop/index_poem_dynasty.txt")
df['id'] = ' '
df['dynasty'] = ' '
all_dynasty = dict()
for i in range(len(df['poemid'])):
df['id'][i] = str(df['poemid'][i])
df['dynasty'][i] = "".join(str(df['dyn'][i]).split("朝代:"))
all_dynasty[df['dynasty'][i]] = 1
for dyn in all_dynasty.keys():
temp = []
for i in range(len(df['id'])):
if dyn == df['dynasty'][i]:
temp.append(df['id'][i])
all_dynasty[dyn] = temp
pprint(all_dynasty)
for sort in all_dynasty.keys():
with open('index_poem_dynasty.csv', 'a+', encoding='utf-8-sig') as f:
f.write(sort + ':'+','.join(all_dynasty[sort])+'\n')
还有更复杂一点的诗歌标签的倒排索引:
from pprint import pprint
import pandas as pd
docu_set = dict()
df = pd.read_csv("C:/Users/caiweiwen/Desktop/index_poem_sort.txt")
key = ""
value = ""
for i in range(42440): #数据问题,之后的数据id和sort之间会换行
key = str(df['poemid'][i])
value = str(df['sort'][i]).split( ) #去掉每个sort里的空格,返回列表
docu_set[key]=value
print(key)
print(value)
tmp = []
for i in range(42439,len(df['poemid'])):
if(df['poemid'][i].isdigit()): #判断是否为数字,是则为id
key = df['poemid'][i]
docu_set[key] = tmp
else:
tmp.append("".join(str(df['poemid'][i]).split())) #先去掉sort里的空格,因为返回的列表项是列表,列表项应为string,所以又转为string
if(df['poemid'][i+1].isdigit()): #判断下一行是否为数字
docu_set[key] = tmp
print("key:" + key)
print("value:" + str(tmp))
tmp = []
pprint(docu_set) #输出字典
all_words = dict()
for i in docu_set.values():
for j in i:
all_words[j] = 1
print(all_words.keys())
invert_index = dict()
for b in all_words.keys():
temp = []
for j in docu_set.keys():
if b in docu_set[j]:
temp.append(j)
invert_index[str(b)] = temp
pprint(invert_index)
for sort in invert_index.keys():
with open('index_poem_sort.csv', 'a+', encoding='utf-8-sig') as f:
f.write(sort + ':'+','.join(invert_index[sort])+'\n')
倒排结果:

导入时选择txt文件的形式

栏位分隔符我选择其他符号,我用冒号“ :”,视自己的具体情况而定,这样选源栏位和目标栏位时就很清晰了

最后的成果:

总结:
刚开始还是走了很多弯路,用dataframe和它自带的建索引,结果不知道怎么用,还是上网搜了倒排索引的python代码后才知道该用什么数据类型,幸好看到的第一个就是对的哈哈哈,
以前第一次做android的时候就花了很多时间查百度都没对,问了大佬才知道要先系统地学习一遍。以后不知道怎么写的时候还是直接搜要做的内容吧,按自己的想法搜数据结构或者算法要
花很多时间。
导出mysql内数据 python建倒排索引的更多相关文章
- 使用Python3导出MySQL查询数据
整理个Python3导出MySQL查询数据d的脚本. Python依赖包: pymysql xlwt Python脚本: #!/usr/bin/env python # -*- coding: utf ...
- Python导出MySQL数据库中表的建表语句到文件
为了做数据对象的版本控制,需要将MySQL数据库中的表结构导出成文件进行版本化管理,试写了一下,可以完整导出数据库中的表结构信息 # -*- coding: utf-8 -*- import os i ...
- linux下用命令导出mysql表数据
由于数据库服务器是内网环境,只能通过linux跳板机连接,所以navicat工具暂时用不上. 1.用Xshell工具连接跳板机 2.再通过跳板机连接数据库服务器 >ssh -p port ip ...
- 导出mysql数据库数据
1.phpmyadmin导出 ) AS `a` LEFT JOIN ( SELECT * FROM `newerp_jifen_order_log` WHERE `content` = '客户确认收货 ...
- shell导出mysql部分数据
#!/bin/shSYSTEM=`uname -s` echo "echo"$SYSTEM if [[ $SYSTEM = "Linux" ]]; then ...
- 使用MySQL的SELECT INTO OUTFILE ,Load data file,Mysql 大量数据快速导入导出
使用MySQL的SELECT INTO OUTFILE .Load data file LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.当用户一前一后地使用SELECT ...
- linux下导入、导出mysql数据库命令 下载文件到本地
一.下载到本地 yum install lrzsz sz filename 下载 rz filename 上传 linux下导入.导出mysql数据库命令 一.导出数据库用mysqldump命 ...
- PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
现在数据库里面有一组数据,我们将它按照不同的难度进行分sheet. 首先我们需要写一个mysql的配置文件- db.config.php(utf-8编码) : <?php $dbconfig= ...
- mysql的数据导出方法
mysql的数据导出几种方法 从网上找到一些问题是关于如何从MySQL中导出数据,以便用在本地或其它的数据库系统之上:以及 将现有数据导入MySQL数据库中. 数据导出 数据导出主要有以下几种方法 ...
随机推荐
- SpringBoot第二集:注解与配置(2020最新最易懂)
2020最新SpringBoot第二集:基础注解/基础配置(2020最新最易懂) 一.Eclipse安装SpringBoot插件 Eclipse实现SpringBoot开发,为便于项目的快速构建,需要 ...
- ansible-hoc命令行
ansible一种开源的自动化工具 ansible: hoc命令行: 是一款开源的自动化运维工具 python paramiko #模拟ssh协议批量管理主机 jinja2 #模板语言,主要用来传递变 ...
- Flink1.9.2源码编译和使用
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- JPA 相关API (一)
[Query 接口下的常用API] [API 测试类:Test_QueryAPI.java] 1 package org.zgf.jpa.entity; 2 3 import java.math.Bi ...
- RestfulApi 学习笔记——简单介绍(一)
前言 什么是restapi? 直接看:http://www.ruanyifeng.com/blog/2014/05/restful_api.html 阮一峰的blog,即可明白,下面是一些例子,增强理 ...
- css 兼容性总结
1.就是ie6双倍边距的问题,在使用了float的情况下,不管是向左还是向右都会出现双倍,最简单的解决方法就是用display:inline;加到css里面去. 2.文字本身的大小不兼容.同样是fon ...
- Docker - 使用 Jenkins 镜像创建容器,并搭建 Python + Pytest +Allure 的自动化测试环境
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 安装 Docker 直接参考我这 ...
- 13 SOAP
13 SOAP SOAP(原为Simple Object Access Protocol的首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service) ...
- php xml转数组
<?php libxml_disable_entity_loader(true); $notify_values = json_decode(json_encode(simplexml_load ...
- python中 try、except、finally 的执行顺序(转)
def test1(): try: print('to do stuff') raise Exception('hehe') print('to return in try') return 'try ...