一、python遇上mysql时,mysql下载与安装
0.mysql官网下载:
https://dev.mysql.com/downloads/mysql/
一定要下载mysql8.0.zip解压版
1.zip格式是自己解压,解压缩之后其实MySQL就可以使用了,但是要进行环境变量配置zip格式是自己解压。
把该同目录mysql文件夹放到系统盘C盘根目录。
2.我的电脑->属性->高级->环境变量,系统变量下选择Path,在其后面添加: 你的mysql bin文件夹的路径 :
我的是C:\mysql\bin
3.配置完环境变量之后,在C:\mysql目录下新增加一个配置文件mysql.ini ,同时在bin的同级目录下创建一个data文件夹(用于存放数据库数据)
4.mysql.ini文件的内容如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\mysql
# 设置mysql数据库的数据的存放目录
datadir=C:\mysql\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
5.通过“运行”,打开cmd,不需要进入安装目录(∵之前配置过环境变量),输入下面命令,回车,没有反应
mysqld --initialize-insecure --user=mysql
6.输入下面命令,回车,会提示安装成功
mysqld install
7.启动服务,输入如下命令,回车,启动成功后如下图
net start mysql
8.服务启动成功之后,需要登录的时候输入命令(第一次登录没有密码,直接按回车过)
mysql -u root -p
9.修改密码(必须先启动mysql),执行如下命令回车,enter password也回车,密码一般设置为root,方便记忆
mysqladmin -u root -p password
10.退出exit 就行了,记住直接关闭cmd窗口是没有退出的,要输入exit才会退出啊
二、关闭mysql开机自启动
1.在运行中输入Services.msc
2.mysql右键属性,自动改成手动
三、Navicat图形化界面连接mysql
Navicat Premium 15中文版 下载地址:(这是来自官方下载的地址,或者你们自己找也行)软件官网(中国版):https://www.navicat.com.cn/
简体中文|
[x86]:http://download.navicat.com/download/navicat150_premium_cs_x86.exe
[x64]:http://download.navicat.com/download/navicat150_premium_cs_x64.exe
注册机:https://www.lanzous.com/i9247gd
(我的是5.5版本,千城忆梦给了一个5.6版本的,都好用。)
Navicat Keygen Patch v5.6.0 DFoX.exe:https://www.lanzous.com/i8j6jda 密码:3euu
注册机使用方法:
1.安装我就不说了,一路下一步就行,最多选个安装位置。安装好之后先不要运行。
2.将注册机文件解压到Navicat安装目录下,运行。点“patch”按钮,成功的话会弹出对话框“navicat.exe-x64->Cracked!”字样
3.现在运行Navicat ,会弹出窗口提示你,还能试用14天,这时候点“注册”。点了之后会出来一个让你输入激活码的窗口。
回到注册机窗口,点“ Generate”,(如下图)激活码那地方会自动填上。(如果没自动填上就手动复制一下)。然后点“激活”
4.这时候会弹出另一窗口,提示大概是说访问不了注册服务器了,这时候点“手动注册"
5.下一个界面里会有一大段的”请求码“,复制下来粘贴到注册机里,并点击最下方的”Generate“按钮,会生成注册码,复制回去激活即可。
实例操作:
利用Navicat Premium 15连接mysql数据库,新建testdb数据库,并在该数据库下添加2个表,usertest和userinfo


添加字段和数据




main.py
#!/usr/bin/python3# -*- coding: utf-8 -*-import reimport pymysql # 导入模块myConn = pymysql.connect(host='127.0.0.1', # 主机模块port=3306, # 端口号user='root', # 用户名password='root', # 密码database='testdb', # 需要连接的数据库charset='utf8' # 指定编码utf8)if __name__ == '__main__':# myCursor = myConn.cursor() # 获取游标,默认游标类型为元组形式myCursor = myConn.cursor(pymysql.cursors.DictCursor) # 获取的查询结果更加规范化 便于分辨sql = "select * from userTest;"row_count = myCursor.execute(sql) # row_count 受影响的行数for x in myCursor.fetchall(): # 取出所有的print(x)try:# ===插入记录===sql = "INSERT INTO userTest(id,name,age) VALUES(%s, %s, %s)"val = (6, "John", 23)myCursor.execute(sql, val) # 执行sql语句"""val = [(7, "Lily", 30),(8, "Martin", 35),(9, "Sally", 32)]myCursor.executemany(sql, val) # 插入多行数据时,执行sql语句"""# ===修改记录===# 以字符串形式书写SQL语句sql = "update userTest set name = '刘琪' where name = '韩寒'; "# 执行SQL语句row_count = myCursor.execute(sql)# ===删除记录===# 以字符串形式书写SQL语句sql = "delete from userTest where name= '王五' ;"# 执行SQL语句row_count = myCursor.execute(sql)myConn.commit() # 增删改操作时,需要进行提交except Exception as err:# 检查异常原因是否是感兴趣的result1 = re.search('Duplicate entry.*key.*PRIMARY', str(err))# 如果是,什么都不用做# 否则(也不知道是什么原因),那就回滚吧if result1 is None:myConn.rollback()raisemyCursor = myConn.cursor(pymysql.cursors.DictCursor) # 获取的查询结果更加规范化 便于分辨sql = "select * from userTest;"row_count = myCursor.execute(sql) # row_count受影响的行数for x in myCursor.fetchall(): # 取出所有的print(x)# =====使用数据来进行一下用户名和密码的认证操作======myCursor = myConn.cursor(pymysql.cursors.DictCursor)usr = input('请输入用户名:').strip()pwd = input('请输入密码:').strip()# 当已知用户名时 破解密码为 (feng'-- dfadasdad)# 当未知用户名密码时 破解密码为 (fsdf' or 1=1 -- fdsfsdfs)try:sql = "select * from userinfo where username='%s' and password='%s';" % (usr, pwd)# res我们说是得到的行数,如果这个行数不为零,说明用户输入的用户名和密码存在,如果为0说明不存在row_count = myCursor.execute(sql) # pymysql 模块会自动将输入的特殊字符删除print(row_count) # 如果输入的用户名和密码错误,这个结果为0,如果正确,这个结果为1if row_count:print('登陆成功')else:print('用户名和密码错误!')except Exception as err:# 检查异常原因是否是感兴趣的result1 = re.search('Duplicate entry.*key.*PRIMARY', str(err))# 如果是,什么都不用做# 否则(也不知道是什么原因),那就回滚吧if result1 is None:myConn.rollback()raisemyCursor.close() # 关闭游标myConn.close() # 关闭连接




