mysql数据读取与上传_pandas应用实例——读取本地文件上传至MySQL数据库

d10daab6a4da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

文件目录.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')

d10daab6a4da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

连接数据库成功.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数据量

d10daab6a4da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

数据库内容.png

d10daab6a4da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

ratings数据量.png

d10daab6a4da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

movies数据量.png

d10daab6a4da?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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来存储数据就真的很慢了要一直循环

在Flask框架中结合Pymysql处理用户头像上传,通常会涉及以下几个步骤: 1. **设置环境**: 首先需要安装Flask、Flask-WTF(用于表单处理)和Flask-Uploads(用于文件上传)等库。你可以通过`pip install Flask Flask-WTF Flask-Uploads PyMySQL`命令安装。 2. **配置数据库连接**: 使用Pymysql建立到MySQL数据库的连接,在Flask应用的配置文件(如`config.py`)中设置数据库相关的配置信息,比如主机、用户名、密码和数据库名。 ```python from sqlalchemy import create_engine SQLALCHEMY_DATABASE_URI = "mysql+pymysql://username:password@localhost/db_name" engine = create_engine(SQLALCHEMY_DATABASE_URI) ``` 3. **创建模型**: 定义一个User模型,包含头像URL字段,并继承自flask_sqlalchemy.Model。 ```python from flask_sqlalchemy import SQLAlchemy from werkzeug.utils import secure_filename from flask_uploads import UploadSet, configure_uploads, IMAGES db = SQLAlchemy() avatar = UploadSet('avatars', IMAGES) app.config['UPLOADED_PHOTOS_DEST'] = 'static/user_avatars' class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) avatar_file = db.Column(db.String(255)) avatar_url = db.relationship('Avatar', backref='user', uselist=False) class Avatar(db.Model): id = db.Column(db.Integer, primary_key=True) filename = db.Column(db.String(255), unique=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) ``` 4. **路由和视图函数**: 创建上传头像的路由和处理文件上传的视图函数。这里使用Flask-WTF的FileField。 ```python from flask_wtf import FlaskForm from wtforms import FileField, SubmitField from wtforms.validators import DataRequired class ProfileForm(FlaskForm): avatar = FileField("选择头像", validators=[DataRequired()]) submit = SubmitField("上传") @app.route('/profile', methods=['GET', 'POST']) def profile(): form = ProfileForm() if form.validate_on_submit(): file = form.avatar.data # 检查文件并保存 filename = secure_filename(file.filename) avatar.save(file, name=filename) # 更新数据库 user = User.query.get(current_user.id) user.avatar_file = filename db.session.commit() return redirect(url_for('profile_success')) return render_template('profile.html', form=form) ``` 5. **模板和静态资源**: 创建HTML模板,让用户可以上传头像,然后展示已经上传成功的头像链接。 ```html <!-- profile.html --> <form method="post" enctype=multipart/form-data> <input type=file name=avatar> <button type=submit>上传</button> </form> <p>Your uploaded image URL: {{ current_user.avatar_url }}</p> ``` 6. **错误处理**: 要考虑文件大小限制、文件类型验证以及数据库操作异常的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值