1、首先环境是centos7,如果你上面安装了数据库,请先卸载掉设备上原有的默认数据库,我们需要的是互联网源,如果没有请下载163或阿里源
2、yum -y install wget 下载wget工具
3、wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
4、yum -y install mysql57-community-release-el7-10.noarch.rpm
5、yum -y install mysql-community-server
6、启动mysql服务:
systemctl start mysqld.service
7、查看启动状态:如果出现running则证明启动成功
systemctl status mysqld.service
8、查看初始化密码:过滤出来的就是初始密码
cat /var/log/mysqld.log | grep “password”
9、登录mysql
mysql -uroot -pxxxxx
10、需要先修改密码,否则不能进行操作
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Root@123’;
这里如果出现ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
需要注意你设置的密码需要符合密码原则,如果想要查询 SHOW VARIABLES LIKE ‘validate_password%’;
MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
set global validate_password_policy=LOW;关闭密码原则
当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值
11、想要通过WinDows远程登录需要授权
grant all privileges on . to root@’%’ identified by ‘Root@123’;
12、刷新权限
flush privileges;
exit
13、最后安装PyMySQL:
$ pip3 install PyMySQL
1、首先在命令行输入ipython,如果没有python3也可以
2、ipython
In [1]: import pymysql
#批量导入mysql模板
In [2]: db = pymysql.connect(“localhost”,“root”,“Root@123”,“test”)
#打开数据库连接,注意这里依次是"地址",“用户”,“密码”,“库名”
#这个test库需要自己创建的
In [3]: cursor = db.cursor()
#使用cursor()方法创建一个游标对象cursor,用户存放sql语句
In [4]: cursor.execute(“SELECT VERSION()”)
#使用execute()方法执行sql查询
Out[4]: 1
In [5]: data = cursor.fetchone()
#使用fetchone()方法获取单条数据
In [6]: print(data)
(‘5.7.32’,)
#如果出现版本号则证明连接成功
In [7]: db.close()
#关闭连接
接下来都是通过脚本实现,这里面使用的都是最简单的表,你可以设置一些主键约束或者不为空、默认值都可以
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","Root@123","test")
#使用cursor()方法 创建一个游标对象
cursor = db.cursor()
#使用execute()方法执行SQL语句
cursor.execute("DROP TABLE IF EXISTS emp")
#如果这个表存在就删除
sql = """CREATE TABLE emp(
id int,
first_name char(20),
last_name char(20),
age int,
sex char(2),
income float)
"""
cursor.execute(sql)
#关闭数据库连接
db.close()
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","Root@123","test")
#使用cursor()方法 创建一个游标对象
cursor = db.cursor()
#插入SQL语句
sql = """
INSERT INTO emp(
id,first_name,last_name,age,sex,income)
VALUES ('1','andy','fly',20,"男",2000)
"""
#如果不让插入不进去就是中文字符的问题,下面有解决
#使用execute()方法执行SQL语句
#cursor.execute(sql)
try:
#执行sql语句
cursor.execute(sql)
#提交到数据库执行
db.commit()
except:
#如果发生错误就回滚
db.rollback()
db.close()
在插入一条,注意这个sql语句还可以这样写,你可以让用户输入
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","Root@123","test")
#使用cursor()方法 创建一个游标对象
cursor = db.cursor()
#插入SQL语句
sql = "INSERT INTO emp( \
id,first_name,last_name,age,sex,income) \
VALUES('%s','%s','%s','%s','%s','%s')"%('2','Anny','jane',22,'女',3000)
#使用execute()方法执行SQL语句
#cursor.execute(sql)
try:
#执行sql语句
cursor.execute(sql)
#提交到数据库执行
db.commit()
except:
#如果发生错误就回滚
db.rollback()
db.close()
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","Root@123","test")
#使用cursor()方法 创建一个游标对象
cursor = db.cursor()
#插入SQL语句
sql = "DELETE FROM emp WHERE age> %s"%(21)
#删除年龄大于21岁的
try:
#执行sql语句
cursor.execute(sql)
#提交到数据库执行
db.commit()
except:
#如果发生错误就回滚
db.rollback()
db.close()
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","Root@123","test")
#使用cursor()方法 创建一个游标对象
cursor = db.cursor()
#插入SQL语句
sql = "UPDATE emp SET age=age+1 WHERE sex='男'"
#当性别是男就增加一岁
try:
#执行sql语句
cursor.execute(sql)
#提交到数据库执行
db.commit()
except:
#如果发生错误就回滚,保证了数据的一致性可完整性
db.rollback()
db.close()
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","Root@123","test")
#使用cursor()方法 创建一个游标对象
cursor = db.cursor()
#SQL查询语句
sql = "SELECT * FROM emp WHERE income > 2000"
#或者查看某个字段的数据
#sql = "SELECT id,age FROM emp WHERE income > 2000"
try:
#执行SQL语句
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
id = row[0]
fname=row[1]
lname=row[2]
age=row[3]
sex=row[4]
income =row[5]
print(id,fname,lname,age,sex,income)
#for row in result:
#id = row[0]
#age=row[1]
#print(id,age)
except:
print("Error:no data")
#关闭数据库连接
db.close()
注意增删改查,除了查都需要db.rollback()发现错误回滚,db.commit()执行完sql语句后没有问题交给数据执行,也就是需要保证数据库的特性。
数据库事物特性:一致性、原子性、隔离性、持久性
如果出现中文字符不让插入
ERROR 1366 (HY000): Incorrect string value: ‘\xE7\x94\xB7’ for column ‘sex’ at row 1
修改数据库test的字符集:
alter database test character set utf8
修改数据表emp的字符集:
alter table emp character set utf8
修改sex字段的字符集:你是那个字段就修改哪个
alter table emp change sex sex char(2) character set utf8;
报错出现:module ‘pymysql’ has no attribute 'connect’
大多数都是文件名的原因,你可以先改个名字试试,或者换个目录测试。