数据库
请解释MYSQL的数据库引擎作用?
一、请解释MYSQL的数据库引擎作用?
使用mysql插件式存储引擎体系结构,允许数据库专业人士为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用编码要求,采用mysql服务器系统结构,由于在存储级别上提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。
因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。二、人脸识别中mysql数据库起什么作用?
人脸识别mysql数据库起数据提供参照作用,实现多项参照,精准解析:
需求描述
1.将人脸特征信息保存进MySQL数据库。
2.调用摄像头识别人脸,将待识别的人物进行识别,并实时地与数据库中的人脸特征信息进行比对,同时判断出被识别者的身份。
需求分析
1、准备
利用opencv、face_recognition、numpy、pymysql等Python第三方类库,官方说法是face_recognition的人脸识别准确率高达99.6%。
2、识别
利用face_recognition,可以很轻易地得到人脸128维的人脸编码,并且通过比对函数,就可以得出想要的结果。
3、编码
由于face_recognition的128维的人脸编码是一个numpy ndarray类型,即矩阵,并不能存进数据库,要想存进数据库,必须进行类型转换
思路:先将矩阵转为列表,再将列表里的每个元素转为字符串,再用字符串拼接的方式拼成一个字符串,这时就可以把特征值存进数据库了。
4.译码
既然是特征值的比对,那么从数据库取完数据之后,就需要把字符串重新转为矩阵格式。
思路:先通过字符串切割,转为列表,再对列表里每个元素转为浮点型(float),最后再转为矩阵。
5.输出
常规做法通过人脸识别后想要在图像上输出被识别者姓名,但是opencv有自己的一套编码规范,无法输出中文,如果保存的是中文,那么就会出现乱码的情况。
中文文字图像显示解决思路:通过调用本地已存在的字体,利用PIL进行格式转换。
解决方案
数据库设计
FaceSQL.py:MySQL数据库处理相关
import pymysql
class FaceSQL:
def __init__(self):
self.conn = pymysql.connect(
# 数据库的IP地址
host="xxx.xxx.xxx.xxx",
# 数据库用户名称
user="******",
# 数据库用户密码
password="******",
# 数据库名称
db="xxx",
# 数据库端口名称
port=3306,
# 数据库的编码方式 注意是utf8
charset="utf8"
)
def processFaceData(self, sqlstr, args=()):
print(sqlstr)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = self.conn.cursor()
try:
# 执行sql语句
cursor.execute(sqlstr, args)
# 提交到数据库执行
self.conn.commit()
except Exception as e:
# 如果发生错误则回滚并打印错误信息
self.conn.rollback()
print(e)
finally:
# 关闭游标
cursor.close()
def saveFaceData(self,id,encoding_str):
self.processFaceData("insert into face(学号,encoding) values(%s,%s)", (id, encoding_str))
def updateFaceData(self, id, encoding_str):
self.processFaceData("update face set encoding = %s where 学号 = %s", (encoding_str, id))
def execute_float_sqlstr(self, sqlstr):
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = self.conn.cursor()
# SQL插入语句
results = []
try:
# 执行sql语句
cursor.execute(sqlstr)
# 获取所有记录列表
results = cursor.fetchall()
except Exception as e:
# 如果发生错误则回滚并打印错误信息
self.conn.rollback()
print(e)
finally:
# 关闭游标
cursor.close()
return results
def sreachFaceData(self, id):
return self.execute_float_sqlstr( "select * from face where 学号="+id)
def allFaceData(self):
return self.execute_float_sqlstr( "select * from face ")
def sreach_Info(self,id):
return self.execute_float_sqlstr( "select * from zstustu where 学号='" + id + "'")
FaceTools.py: 人脸特征信息处理相关
import face_recognition
import numpy
from os import listdir,path
from FaceSQL import FaceSQL
class FaceTools:
def __init__(self):
try:
self.facesql=FaceSQL()
except :
print("数据库连接错误")
def encoding_FaceStr(self, image_face_encoding):
# 将numpy array类型转化为列表
encoding__array_list = image_face_encoding.tolist()
# 将列表里的元素转化为字符串
encoding_str_list = [str(i) for i in encoding__array_list]
# 拼接列表里的字符串
encoding_str = ','.join(encoding_str_list)
return encoding_str
def decoding_FaceStr(self, encoding_str):
# print("name=%s,encoding=%s" % (name, encoding))
# 将字符串转为numpy ndarray类型,即矩阵
# 转换成一个list
dlist = encoding_str.strip(' ').split(',')
# 将list中str转换为float
dfloat = list(map(float, dlist))
face_encoding = numpy.array(dfloat)
return face_encoding
def add_Face(self,image_name, id):
# 加载本地图像文件到一个numpy ndarray类型的对象上
image = face_recognition.load_image_file("./photo/"+image_name)
# 返回图像中每个面的128维人脸编码
# 图像中可能存在多张人脸,取下标为0的人脸编码,表示识别出来的最清晰的人脸
image_face_encoding = face_recognition.face_encodings(image)[0]
encoding_str =self.encoding_FaceStr(image_face_encoding)
# 将人脸特征编码存进数据库
self.facesql.saveFaceData(id,encoding_str)
def updata_Face(self, image_name, id):
# 加载本地图像文件到一个numpy ndarray类型的对象上
image = face_recognition.load_image_file("./photo/"+image_name)
# 返回图像中每个面的128维人脸编码
# 图像中可能存在多张人脸,取下标为0的人脸编码,表示识别出来的最清晰的人脸
image_face_encoding = face_recognition.face_encodings(image)[0]
encoding_str = self.encoding_FaceStr(image_face_encoding)
# 将人脸特征编码更新数据库
self.facesql.updateFaceData(id, encoding_str)
def sreach_Face(self, id):
face_encoding_strs = self.facesql.sreachFaceData(id)
# 人脸特征编码集合
face_encodings = []
# 人脸特征姓名集合
face_names = []
for row in face_encoding_strs:
name = row[0]
face_encoding_str = row[1]
# 将从数据库获取出来的信息追加到集合中
face_encodings.append(self.decoding_FaceStr(face_encoding_str))
face_names.append(name)
return face_names,face_encodings
def load_faceoffile(self):
filepath = 'photo'
filename_list = listdir(filepath)
# 人脸特征编码集合
face_encodings = []
# 人脸特征姓名集合
face_names = []
a = 0
for filename in filename_list: # 依次读入列表中的内容
a += 1
if filename.endswith('jpg'): # 后缀名'jpg'匹对
face_names.append(filename[:-4]) # 把文件名字的后四位.jpg去掉获取人名
file_str = 'photo' + '/' + filename
a_images = face_recognition.load_image_file(file_str)
print(file_str)
a_face_encoding = face_recognition.face_encodings(a_images)[0]
face_encodings.append(a_face_encoding)
print(face_names, a)
return face_names,face_encodings
def load_faceofdatabase(self):
try:
face_encoding_strs = self.facesql.allFaceData()
except:
print("数据库连接错误")
# 人脸特征编码集合
face_encodings = []
# 人脸特征姓名集合
face_names = []
for row in face_encoding_strs:
name = row[0]
face_encoding_str = row[1]
# 将从数据库获取出来的信息追加到集合中
face_encodings.append(self.decoding_FaceStr(face_encoding_str))
face_names.append(name)
return face_names, face_encodings
def load_images_face(self,filepath):
filename_list = listdir(filepath)
for filename in filename_list: # 依次读入列表中的内容
if path.isdir(filepath+filename):
self.load_images_face(filepath+filename+"\\")
if filename.endswith('jpg'): # 后缀名'jpg'匹对
file_str = filepath + filename
a_images = face_recognition.load_image_file(file_str)
print(file_str)
face_encoding = face_recognition.face_encodings(a_images)
if face_encoding != []:
a_face_encoding = face_encoding[0]
encoding_str = self.encoding_FaceStr(a_face_encoding)
self.facesql.saveFaceData(filename[:-4], encoding_str)
def load_images_faces(self, filepath):
filename_list = listdir(filepath)
a=0
for filename in filename_list: # 依次读入列表中的内容
if filename.endswith('jpg'): # 后缀名'jpg'匹对
file_str = filepath + filename
a_images = face_recognition.load_image_file(file_str)
print(file_str)
face_encoding = face_recognition.face_encodings(a_images)
for a_face_encoding in face_encoding:
a += 1
encoding_str = self.encoding_FaceStr(a_face_encoding)
self.facesql.saveFaceData(filename[:-4] + "-" + str(a), encoding_str)
运行结果
三、mysql常用的数据库?
mysql是常用的数据库软件之一,属于免费数据库,还有db2,oracle等,现在很多中小企业用的都是mysql数据库软件,因为其免费,且性能不错,性价比高。对于大数据也具有一定的支持,单表也可以达到g级别的支持。对于程序员,mysql自然就成为首选。
四、mysql installer是mysql数据库吗?
MYSQL官方提供了Installer方式安装MYSQL服务以及其他组件,使的Windows下安装,卸载,配置MYSQL变得特别简单。就是说MySQL Installer可以直接和其他电脑软件一样安装,而且里面包含MySQL Community Server。
五、Navicat for MySQL怎么连接MySQL数据库?
1开启电脑后,进入系统桌面,选择开启桌面上的Navicate for MySQL软件。
2点击后,会自动进入软件主界面,在软件主界面,找到并点击连接选项。
3点击后,会进入新建连接中。
4在新建连接选项中,输入新建的连接名,可以任意命名。
5输入完连接名后,找到密码选项,输入MySQL的密码。
6输入完密码后,点击确定退出连接。
7点击后,自动返回主界面,会发现主界面中就有了新建立的连接。
六、Navicat for MySql如何连接mysql数据库?
首先你电脑上必须安装了mysql的数据库。(如果你不清楚自己是否已经安装成功mysql,你可以在开始菜单输入“mysql”,进行搜索)
打开你的Navicat for Mysql (这里也可以使用上面的方法,在开始菜单搜索框中输入‘navicat’)
打开后单机工具栏左边第一个‘connection’,进入连接页面。
最重要的一步:打开的界面有五个框需要输入,第一个:connection Name 需要的是你新建的连接的的名字,这里我们就命名为‘本地’,第二个:Host Name/Ip Address 你需要输入的是你本机的ip地址或者直接输入’localhost’,这里我们选择第二种。 第三个:Port ,输入你安装时候的端口号,一般为默认的3306;第四个和第五个分别为:UserName和Password,意思为你需要输入你数据库名用户名和密码,我的用户名是:root,密码:(保密,嘿嘿)。最后把下面那个‘Save Passwod’的小框框给勾上。
完成上面步骤,然后点击左下角有个‘Test Connectiion’如果弹出success,恭喜你直接点击右下角的‘save’按钮就可以了。如果弹出error ,你则需要再重新仔细查看自己哪里填错了。
点击‘save’后,你就可以双击“本地”(这里的‘本地’是你刚才输入的connection Name),然后打开你的数据库了。
七、MySQL数据库使用?
MySQL数据库的使用方法如下:
连接MySQL。
启动MySQL服务。
创建数据库:使用管理员权限登录到MySQL,在命令行终端输入:create database 库名。
确认数据库信息:用命令show databases; 可查看是否创建成功。
退出MySQL。
修改密码:如果忘记密码,需清空MySQL数据目录下的一个名为“*.frm”的文件,然后重启MySQL服务即可。
八、mysql导入数据库?
要将数据库导入MySQL中,可以按照以下步骤进行操作:
1. 准备要导入的数据库文件:将要导入的数据库文件放置在MySQL服务器中的一个位置,例如 /tmp 目录下。
2. 登录MySQL:使用MySQL客户端连接到MySQL服务器。
3. 创建要导入的数据库:如果要导入的数据库在MySQL中不存在,需要先创建一个空的数据库。可以使用以下命令创建一个数据库:
```
CREATE DATABASE database_name;
```
其中,database_name是要创建的数据库的名称。
4. 选择要导入的数据库:使用以下命令选择要导入的数据库:
```
USE database_name;
```
其中,database_name是要导入的数据库的名称。
5. 导入数据库:使用以下命令将数据库文件导入到MySQL中:
```
SOURCE /tmp/database_file.sql;
```
其中,/tmp/database_file.sql是要导入的数据库文件的完整路径。
在执行导入的过程中,可能会出现一些错误,例如导入的SQL语句有误、数据格式不符等,需要及时检查并修复这些错误。
需要注意的是,导入大型的数据库文件可能会比较耗时,需要耐心等待导入过程完成。导入完毕后,可以使用SELECT语句查询导入的数据,以确保导入成功。
九、打包mysql数据库?
直接打包MySQL数据可以执行 mysqldump -uroot -p dbname >db.sql命令进行,但是使用MySQL可视化工具会更方便,比如navicat,可以傻瓜式操作,很方便
十、怎么使用Mysql Workbench查询mysql数据库?
我的是MySQLWorkbench6.3CE点击菜单database-connecttodatabase(此时保证你的MySQL软件是打开的)-ok就行了
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...