暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL下载与安装,Python操作mysql数据库

捷创源科技 2022-02-15
1236


一、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 re


import 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()
raise


myCursor = 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,如果正确,这个结果为1


if row_count:
print('登陆成功')
else:
print('用户名和密码错误!')
except Exception as err:
# 检查异常原因是否是感兴趣的
result1 = re.search('Duplicate entry.*key.*PRIMARY', str(err))
# 如果是,什么都不用做
# 否则(也不知道是什么原因),那就回滚吧
if result1 is None:
myConn.rollback()
raise


myCursor.close() # 关闭游标
myConn.close() # 关闭连接


文章转载自捷创源科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论