mysql基础(2)-数据处理(mysql+pandas)

插入语句insert
insert  数据表名(字段名...)
values(字段值);
例 :
insert into new_student values("张","2014101010","昆虫",13030303030,'1990-01-01'); 
insert into new_student values("李","2014101011","昆虫",13030303031,"1991-02-01");
insert into new_student values("王","2014101012","昆虫",13030303032,"1992-03-01");
insert into new_student values("江","2014101013","昆虫",13030303033,"1993-04-01");
insert into new_student values("孙","2014101014","病理",13030303034,"1994-04-01");
insert into new_student values("徐","2014101015","病理",13030303035,"1995-01-01");
insert into new_student values("朱","2014101016","农药",13030303036,"1996-01-01");
insert into new_student values("菊","2014101017","农药",13030303037,"1996-03-01");
同时插入多条语句:
mysql> insert into new_student values("邬家栋","2014101780","昆虫",13580303030,'1850-01-01'), 
         ->("蒋睿","2014101058","昆虫",13030303089,"1991-07-01");
 
注意:逗号分隔,语句结束时是分号。
 
insert ... set 语句通过等号赋值
语法格式:
inert into 数据表名
set 字段名=字段值,
...;
 
例:
mysql> insert into new_student
    -> set new_name="徐晴玉",
    -> sid="2015010111",
    -> major="昆虫",
    -> tel=15468972013,
    -> birthday="1990-05-23";
 
简单select查询
语法格式:
select 字段名 from 数据表名
where 条件表达式

查看某个表的所有数据:select * from new_student;
查看某个表的数据的前几行:select * from new_student limit 3;
筛选出符合条件的的人的名字:select new_name from new_student where birthday >= '1992-01-01'; #生日大于1991.01.01
筛选出符合条件的所有人信息:select * from new_student where birthday >= '1992-01-01'; #星号代替所有字段
筛选出符合条件的所有人信息:select * from new_student where year(birthday) >= 1993; #year是内置函数。找出大于1993年的人所有信息
 
带结果排序的select查询
语法格式:
select 字段名 from 数据表名 
where 条件表达式 
order by 字段名 [asc][desc];
 
例:
mysql> select new_name,birthday from new_student
        -> where birthday > '1990-01-01'
        -> order by birthday desc; #desc降序排列
 
限定结果条数的select语句查询
语法格式:
select 字段名 from 数据表名 
where 条件表达式
limit  row_count;
 
例:
mysql> select new_name,birthday from new_student
    -> where birthday >= '1990-01-01'
    -> limit 3;
 
 
#先对结果进行排序,再做出选择
mysql> select new_name,birthday from new_student
    -> where birthday >= '1990-01-01'
    -> order by birthday desc
    -> limit 3;
 
 
 
更新语句update
语法格式:
update 数据表名
set 字段名=字段值,...
[where 查询条件]
 
mysql> update new_student
    -> set majot="昆虫"; #将所有的专业都改成了昆虫
 
mysql> update new_student
    -> set major="病理"              将major修改为病理,注意major后面没有逗号
    -> where sid='2014101011';  #where是定位修改记录
 
mysql> update new_student
    -> set major="数据挖掘"         #修改major为数据挖掘
    -> where year(birthday) >1993  #查询生日大于1993年的
    -> order by birthday limit 3; #然后按生日排序 依次修改3个
 
 
 
 
删除语句delete
语法格式:
delete from 数据表名
[where 查询条件]          #若无where语句则删除该表所有记录
 
 
例:
mysql> delete from new_student
    -> where new_name="孙";
 
 
 
新增指标
mysql> select stud_code,sub_score,
    -> case when sub_score >= 90 then 'A'
    -> when sub_score >=80 && sub_score<90 then 'B'
    -> when sub_score >=60 && sub_score<80 then 'c'
    -> else 'D'
    -> end AS AB from stud_score;
 
将新指标保存到一个新表中
mysql> create table stud_score_wu1 as
    -> select stud_code,sub_score,
    -> case when sub_score >=90 then 'A'
    -> when sub_score >=80 && sub_score<=90 then 'B'
    -> when sub_score >=60 && sub_score<80 then 'C'
    -> else 'D'
    -> end AS AB from stud_score;
 
 
 实例
1创建一个含自增量为主键的表;往表中插入记录、修改、删除记录。
 1 #!/bin/bash
 2 #文件名称;auto_table.sh
 3 #文件功能:创建一含自增量为主键的表,并进行增删改操作
 4 #创建时间:2016-07-30
 5 #创建作者:邬家栋
 6 
 7 mysql -u feigu_mysql -pfeigu2016 testdb << EOF
 8 drop table if exists wu_auto_table;
 9 create table wu_auto_table(
10 id int unsigned not null auto_increment,
11 name varchar(20) not null comment "姓名",
12 major char(50) not null,
13 score int(10) not null,
14 tel varchar(11) null,
15 primary key(id)
16 );
17 
18 /*插入数据*/
19 insert into wu_auto_table(name,major,score,tel) values("zhang","数据挖掘",98,13030303030),("li","昆虫",85,14040404040),("wang","机器学习",68,15050505050);
20 select * from wu_auto_table;
21 
22 /*更新数据*/
23 update wu_auto_table set major="计算机" where id=2;
24 select * from wu_auto_table;
25 
26 /*新增指标 */
27 drop table if exists new_table;
28 create table new_table as
29 select name,score,
30 case when score>=90 then "A"
31 when score >=80 && score<90 then "B"
32 else "C"
33 end AS AB from wu_auto_table;
34 select * from new_table;
35 
36 /*删除数据*/
37 delete from wu_auto_table where id =3;
38 select * from wu_auto_table;
39 EOF

 

2 修改stud_score表中 stud_code=2015101000的高等代数成绩,并将结果保存到一个文件中。

 

 1 #!/bin/bash
 2 #文件名称;pandas_alter_table.sh
 3 #文件功能:修改stud_score表中某行成绩并保存结果到文件
 4 #创建时间:2016-07-30
 5 #创建作者:邬家栋
 6 
 7 ipython << EOF
 8 import numpy as np
 9 import pandas as pd
10 from pandas import DataFrame
11 import MySQLdb
12 
13 conn=MySQLdb.connect(host='localhost',port=21124,user='feigu_mysql',passwd='feigu2016',db='testdb',charset='utf8',unix_socket='/var/run/mysqld/mysqld.sock')
14 data=pd.read_sql('select * from stud_score',conn)
15 df1=DataFrame(data)
16 df2=df1.ix[2015101000,['sub_score']]=100
17 df2
18 quit
19 EOF

问题:做到这里不会做了修改之后不知奥怎么保存。最后几步有问题。

 
 

转载于:https://www.cnblogs.com/wujiadong2014/p/5715585.html

<think>好的,我现在需要回答用户关于一个人脸识别支付系统中各个模块功能和组成的问题。用户提到了用户界面模块、人脸识别模块、支付功能模块、数据处理与存储模块、数据分析模块以及系统控制模块。我需要逐一分析每个模块,参考用户提供的引用内容,并确保回答结构清晰、符合格式要求。 首先,用户界面模块。这部分应该包括用户交互的界面,比如注册、登录、支付界面,可能还有摄像头调用。引用里提到了使用OpenCV和摄像头,所以需要提到如何集成摄像头进行人脸采集。比如用户注册时需要录入人脸,支付时调用摄像头进行识别。界面设计需要友好,确保操作流畅,这部分可能需要结合OpenCV的摄像头调用功能,如引用[^1]中的face_recognition结合摄像头实现检测。 接下来是人脸识别模块。用户提到了FaceCascade、face_recognition库、OpenCV和NumPy。FaceCascade可能是指Haar级联分类器,用于人脸检测,这是OpenCV的一部分。face_recognition库用于人脸特征提取和识别,如引用[^2]和[^3]所述,该库使用HOG或CNN进行检测,并生成128维特征向量。OpenCV处理图像,比如读取摄像头数据,调整图像尺寸。NumPy用于处理图像数组数据,比如将图像转换为矩阵进行计算。需要分点说明各个组件的功能,比如人脸检测、特征点定位、特征编码和比对。 支付功能模块需要包含支付接口,比如支付宝、微信的API调用,处理支付请求和回调。支付记录存储要记录交易信息,如时间、金额、用户ID,这部分后续会存储到MySQL中。同时,支付成功后可能需要生成凭证或通知用户,确保交易的安全性,比如使用加密传输或验证签名。 数据处理与存储模块使用MySQL数据库,需要设计用户信息表、人脸特征表(存储128维向量,引用中的face_encodings)、支付记录表等。数据库管理包括连接、查询、事务处理,可能还要考虑数据备份和恢复机制,以及索引优化提高查询效率。 数据分析模块涉及对交易数据的分析,比如统计交易量、用户消费习惯,生成报表或可视化图表。优化建议可能基于用户行为分析,比如推荐系统或促销策略。这部分需要结合数据分析工具,如Python的Pandas、Matplotlib,或者BI工具。 系统控制模块负责系统管理和异常处理,比如用户权限管理、日志记录(登录、支付异常)、系统监控(资源使用情况)、异常处理机制(人脸识别失败时的备选方案,如密码验证)。引用[^4]提到预训练模型的放置,可能系统管理还包括模型更新和维护。 需要确保每个模块的功能描述清晰,引用相关的地方加上注释,比如face_recognition的功能引用[^3],OpenCV和摄像头引用[^1],预训练模型引用。同时,检查是否有遗漏的部分,比如支付接口的具体实现细节,或者数据库如何存储特征向量(BLOB类型?)。另外,用户可能关心各个模块之间的协作,比如人脸识别模块如何将用户ID传递给支付模块,支付完成后如何更新数据库,数据分析模块如何从数据库获取数据等。 最后,生成相关问题,要围绕各个模块的可能疑问,比如人脸识别的算法选择、支付安全性、数据库设计、系统异常处理等。确保问题有针对性,帮助用户进一步理解系统。</think>### 用户界面模块 1. **功能**: - 提供用户注册、登录、支付操作的可视化界面。 - 集成摄像头调用功能,用于实时人脸采集和识别。 - 显示支付结果、交易记录及系统提示信息。 2. **组成部分**: - **前端框架**:如HTML/CSS/JavaScript或PyQt/Tkinter(桌面应用)。 - **摄像头交互**:通过OpenCV实现图像捕获和实时预览。 - **用户输入组件**:表单输入(手机号、金额)、按钮触发支付和人脸识别。 --- ### 人脸识别模块 1. **功能**: - **人脸检测**:使用Haar级联分类器(`FaceCascade`)或CNN模型定位人脸区域[^2]。 - **特征编码**:通过`face_recognition.face_encodings`生成128维特征向量。 - **身份比对**:计算实时人脸特征与数据库存储特征的欧氏距离,判断相似度。 2. **组成部分**: - **OpenCV**:图像预处理(灰度化、尺寸调整)、摄像头数据流处理。 - **face_recognition库**:依赖dlib的预训练模型(如`shape_predictor_5_face_landmarks.dat`)实现高精度识别。 - **NumPy**:存储和处理图像矩阵数据(如像素数组、特征向量)。 --- ### 支付功能模块 1. **功能**: - 调用第三方支付接口(如支付宝、微信支付)完成交易。 - 记录交易时间、金额、用户ID及支付状态,确保数据完整性。 2. **组成部分**: - **支付接口**:通过API与第三方服务通信,处理加密请求和回调验证。 - **支付记录存储**:将交易数据写入MySQL数据库,支持查询和退款操作。 --- ### 数据处理与存储模块 1. **功能**: - 存储用户信息(姓名、联系方式)、人脸特征向量、交易记录。 - 提供高效的数据查询和事务管理,支持并发访问。 2. **组成部分**: - **MySQL数据库**: - 用户表:`user_id`, `name`, `phone`。 - 人脸特征表:`user_id`, `face_encoding`(BLOB类型存储128维向量[^3])。 - 交易表:`order_id`, `amount`, `timestamp`, `status`。 - **ORM工具**:如SQLAlchemy,实现Python与数据库的交互。 --- ### 数据分析模块 1. **功能**: - 统计交易频率、用户消费习惯,生成可视化报表(如折线图、热力图)。 - 基于聚类算法分析用户群体,提供促销策略建议。 2. **组成部分**: - **Pandas**:清洗和聚合交易数据。 - **Matplotlib/Seaborn**:数据可视化。 - **机器学习库**:如Scikit-learn,用于用户分群或预测模型。 --- ### 系统控制模块 1. **功能**: - 管理用户权限(如管理员与普通用户角色分离)。 - 监控系统资源(CPU/内存占用),记录操作日志和异常事件。 - 处理人脸识别失败、支付超时等异常,提供备用验证方式(如短信验证码)。 2. **组成部分**: - **日志系统**:记录用户操作和系统事件(如`logging`模块)。 - **异常处理中间件**:捕获并处理数据库连接错误、API调用超时等问题。 - **定时任务**:定期备份数据库或更新预训练模型。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值