文件目录.png
首先在cmd安装pymysql
pip install pymysql
其次在anaconda官网下载电脑系统匹配anaconda安装包,按照教程安装
进入ipython,找到当前的路径
ipython
pwd
Out[162]:C:\\Users\\Administrator'
# 你可以把数据放在这个文件目录下,如果不放的话也可以在后面传文件路径的时候写成绝对路径,当然写绝对路径的时候记得添加一个"\"阻止转义
创建数据库
mysql -uroot -p
password #自己数据库的密码
show databases; #查看已有数据库
create database movie; #创建名为movie的数据库
然后进入cmd
ipython #进入ipython界面
import numpy as np
import pandas as pd
import sqlalchemy as sqla
# 连接MySQL数据库
db=sqla.create_engine('mysql+pymysql://root:123456@127.0.0.1/movie')
连接数据库成功.png
# 获取上面文件路径下的.dat数据并且给一个返回值
movies = pd.read_table('datasets/datasets/movielens/movies.dat', sep='::',header=None, names=mnames, engine='python')
ratings = pd.read_table('datasets/datasets/movielens/ratings.dat', sep='::',header=None, names=mnames, engine='python')
users = pd.read_table('datasets/datasets/movielens/users.dat', sep='::',header=None, names=mnames, engine='python')
# 将得到的数据插入MySQL数据库 这条语句会直接在movie数据库创建相应的(表name="表名")
movies.to_sql(name='movies',con=db,if_exists='replace',index=False)
users.to_sql(name='users',con=db,if_exists='replace',index=False)
ratings.to_sql(name='ratings',con=db,if_exists='replace',index=False)
查看数据库数据
use movie; # 使用movie数据库
show tables ; # 查看数据表
select count(*) from movies; # 查看movies数据量
select count(*) from movies; # 查看movies数据量
select count(*) from movies; # 查看movies数据量
数据库内容.png
ratings数据量.png
movies数据量.png
users数据量.png
这里还有其他两种思想也可以
1.写一个python,open with()把数据读出来,再使用pymysql把数据存到数据库
2.使用原生的SQL,使用这一条语句打开数据库
mysql --local-infile=1 -u root -p # 这样打开可以加载本地文件
首先创建数据库movie,在创建相应的表ratings,movies,users,把字段按照数据内容先写好,再
LOAD DATA local INFILE 'C:\Users\Administrator\\datasets\\datasets\\movielens\\atings.dat' INTO TABLE ratings FIELDS TERMINATED BY '::' ENCLOSED BY '"' LINES TERMINATED BY '\n';
LOAD DATA local INFILE 'C:\Users\Administrator\\datasets\\datasets\\movielens\\movies.dat' INTO TABLE movies FIELDS TERMINATED BY '::' ENCLOSED BY '"' LINES TERMINATED BY '\n';
LOAD DATA local INFILE 'C:\Users\Administrator\\datasets\\datasets\\movielens\\users.dat' INTO TABLE users FIELDS TERMINATED BY '::' ENCLOSED BY '"' LINES TERMINATED BY '\n';
注意:这三种方法中SQL的原生语句最快,pandas的也相当于原生SQL,和前面的效率基本一样,但是使用python写一个程序吗,使用pymysql来存储数据就真的很慢了要一直循环