环境搭建
先简单介绍一下MySQL5.7免安装教程
1. 软件下载
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip
2. 添加环境变量
在电脑环境变量之系统变量里PATH中添加解压后的MySQL5.7的路径(如:D:\MySQL\MySQL5.7\bin)
3. 新建my.ini文件
编辑my.ini的内容为如下:
[mysqld]
basedir=D:\MySQL\MySQL5.7\
datadir=D:\MySQL\MySQL5.7\data\
port=3306
skip-grant-tables
#basedir表示mysql安装路径
#datadir表示mysql数据文件存储路径
#port表示mysql端口
#skip-grant-tables表示忽略密码
4. 安装MySQL服务
启动管理员模式下的cmd,然后切换到MySQL5.7的bin路径下,执行mysqld --install
5. 启动MySQL服务
这时遇到安装的第一个坑!
原因:MySQL数据库在升级到5.7版本后,和之前的版本有些不一样,没有data文件夹了,而在data文件夹中保存的是MySQL数据库文件
解决:输入mysqld --initialize-insecure --user=mysql
,然后重新启动MySQL服务。这时就可以成功启动服务了。
6. 进入MySQL管理
输入mysql -u root -p
,密码可以为空,直接按回车,成功进入MySQL管理界面
7.重新设置密码
输入update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
密码我举例是’123456’,实际使用可以自行设置
然后刷新一下权限flush privileges;
,将之前添加的my.ini文件里的最后一句skip-grant-tables删除
再重启一下mysql
这时遇到安装的第二个坑!
登录mysql后,进行操作提示错误,如下
解决方法:
step1:输入SET PASSWORD = PASSWORD('123456');
step2:输入ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
step3:输入FLUSH PRIVILEGES;
之后就可以安心使用MySQL了!
语法基础
创建名为firstdatabase的数据库
CREATE DATABASE firstdatabase ;
使用名为firstdatabase的数据库
USE firstdatabase;
查看已有数据库
SHOW DATABASES;
数据常见类型
int,char,varchar,datetime
注:char(n)存储固定n个字符,varchar(n)可以存储<=n个任意字符
代码例子
CREATE TABLE students ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, sex CHAR(1) NULL, in_time DATETIME NULL ) DEFAULT CHARSET 'UTF8';
为了方便索引查询数据表里的内容,会设置一个主键(PRIMARY KEY),相当于数据表数据的一个编号
DEFAULT CHARSET 'UTF8'
保证数据表里出现的中文不会乱码
插入语句
INSERT INTO `students` VALUE (1,`Eric`,`男`,now())
INSERT INTO `students2` (`name`,`sex`) VALUES
('Tony','男'),
('Mary','女')
;
查询语句
常用查询语句
SELECT FROM
[WHERE] [GROUP BY] [ORDER BY] [LIMIT]
使用时一定要按照这个顺序
SELECT id,nam FROM firstdatabase WHERE sex ='男' ORDER BY 'id' DESC;
WHERE `sex`= '男'
筛选数据的条件为男
ORDER BY
以id为条件排序
DESC
倒序
修改
基本操作:UPDATE TABLE SET WHERE ;
UPDATA firstdatabase SET name='Tony' WHERE sex='男'
SET
后面跟的是要修改成的数据,WHERE
后面跟的是筛选的条件.注意一定要添加WHERE
,否则将会把数据表全部更新修改了
删除
基本操作:DELETE FROM TABLE WHERE ;
DELETE FROM firstdatabase WHERE sex = '男'
PyMySQL的使用
- 游标对象(cursor):用于执行查询和获取结果
- cursor对象常用语法:
参数名 | 功能 |
---|---|
execute() | 执行数据库的查询,更新等命令。将结果从数据库获取到客户端 |
fetchone() | 获取结果集的下一行 |
fetchmany(n) | 获取结果集的下n行 |
fetchall() | 获取结果集中剩下的所有行 |
rowcount | 最近一次执行execute返回数据的行数或者execute所影响的行数 |
close() | 关闭游标对象 |
代码示例
import pymsql
try:
#打开数据库连接
conn = pymsql.connect(
host = 'localhost',
user = 'root',
passwd = 'duyu2102268',
db = 'nwws',
port = 3306,
charset = 'utf8'
)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
#所要执行的sql语句
sql = 'SELECT * FROM USER'
#使用execute()方法执行sql语句
cursor.execute(sql)
#使用fetchall()获取数据表剩下的数据
rs = cursor.fetchall()
for row in rs:
print('userid={0},username={1}'.format(raw)) #row为一个元组
except Exception as e:
print('Error: {}' .format(e))
finally:
#关闭数据库连接
cursor.close()
其中通过fetchall()
得到的是一个元组的元组,所以要想得到相应信息需要遍历
事务操作
事务:execute操作的集合
提交:让事务中的所有操作同时生效–>正常结束事务conn.commit()
回滚:整个操作的集合回到没有执行的状态–>操作出现异常,结束事务conn.rollback()
关于python操作MySQL的项目实例可以参见https://github.com/EricDuy/Python-MySQL
–END–