python中MySQL使用

1>.linux下mariadb的安装

1.查找与mariadb相关的安转包版本
yum search mariadb
2.安装mariadb的客户软件包和服务软件包
yum install mariadb mariadb-server.x86_64 -y
3.启动mariadb服务
systemctl start mariadb
systemctl enable mariadb
4.mariadb监听的端口
netstat -antlpe | grep mysql
ss -antlpe | grep mysql
vim /etc/services		#所有服务与端口默认的对应关系
5.只允许本地连接,阻断所有来自网络的连接
vim /etc/my.cnf
	skip-networking=1
systemctl restart mariadb

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2>.mariadb的简单操作

1.mariadb的基本操作
1.设置mysql的登陆密码
mysql_secure_installation		
2.进入mysql数据库
mysql -uroot -pyy
3.显示包含的所有数据库
 show databases;
4.进入work数据库
use work;
5.显示work数据库中的所有表
show tables;
6.显示work数据库中home表中的所有数据结构
desc home;
7.显示work数据库中home表中的所有数据内容
 select * from home;
8.显示work数据库中home表中的age列数据内容
select age from home;

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
2.mariadb的创建、插入、更新、删除
1.创建一个命名为py_stud的数据库
create database py_stud;
2.在py_stud数据库中创建一个命名为python1的表格结构,支持中文显示
create table python1(name varchar(20),age int) default charset=utf8;
3.在py_stud数据库中创建一个命名为python1的表格结构,支持中文显示,如果不存在,则创建,否则不创建
create table if not exists  python1(name varchar(20),age int) default charset=utf8;
4.向py_stud数据库中的python1表格插入内容;按照指定表格结构顺序向表中插入数据
insert into python1 values("ming",23);
5.向py_stud数据库中的python1表格插入内容;按照指定顺序向表中插入数据
insert into python1 (age,name) values(18,"xiao");
6.更新py_stud数据库中的python1表格内容,如果名字等于“xiao”,则更新age=21
update python1 set age=21 where name="xiao";
7.向 py_stud数据库中的python1表格结构 增加一列结构【score int】
alter table python1 add score int;
8.删除 py_stud数据库中的python1表格内容中name=“ming”的所有行;
delete from python1 where name="ming";
9.删除数据库或者表
drop table python;		# 删除数据表格
drop database work;	# 删除数据库work
10.在py_stud数据库中创建一个命名为python的表格结构后,使用命令给python表格添加支持中文显示
create table python( name varchar(20) not null, passwd varchar(5));
alter table python default charset=utf8;
11.在py_stud数据库中创建一个命名为jave的表格结构,并且使表头id为唯一主健
create table jave(id int primary key,name varchar(20));

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

3>.mariadb的用户和访问权限的操作

1.在数据库中创建用户kai,可在本机登陆,密码为kai
create user kai@localhost identified by "kai";
2.在数据库中查看可以登陆的用户
select * from mysql.user
3.在数据库中创建用户kai,可在远程登陆,密码为kai
create user kai@"%" identified by "kai";
4.在数据库中给用户本地用户kai授予数据库bank的所有权限
grant all on *.* to kai@localhost;  # *.*表示所有数据库,所有数据表
grant all on bank.* to kai@localhost;
5.在数据库中刷新,重载授权表
flush privileges;
6.查看本地用户kai的用户授权
show grants for kai@localhost;
7.删除本地用户kai的在数据库bank的删除权限
revoke delete on bank.* from kai@localhost;
8.在数据库中删除本地用户kai
drop user kai@localhost;

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

4>.忘记mysql用户密码时,找回mysql密码

1.关闭mariadb服务
systemctl stop mariadb.service
2.跳过授权表,并且程序在后台运行,使任何人都可以登陆mysql数据库
mysqld_safe --skip-grant-table &
3.进入mysql数据库,更新mysql用户,设置用户【root】的密码为【yu】,
mysql
update mysql.user set Password=password("yu") where User="root";
4.关闭跳过授权表的进程,启动mariadb服务,使用新密码即可
ps aux | grep mysql   #查看mysql的后台进程
kill -9 pid					  # 关闭mysql有关系的后台进程
systemctl start mariadb.service		# 开启mariadb服务
mysql -uroot -pyu	 # 使用密码进入mysql数据库

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

5>.mysql的备份与恢复

1.将bank数据库【包含数据库结构】备份到当前路径bank.dump中
mysqldump -uroot -pyu bank >bank.dump
2.先在数据库中创建一个bank1数据库;然后将备份的文件bank.dump恢复到bank1中;
mysqladmin -uroot -pyu create bank1
mysql -uroot -pyu bank1<bank.dump
3.将bank数据库【不包含数据库结构】备份到当前路径nobank.dump中;恢复方法和【包含数据库结构】的数据库恢复一样
mysqldump -uroot -pyu --no-data bank >nobank.dump
4.将数据库中所有数据库全部备份到当前路径alldatabases.dump中
mysqldump -uroot -pyu --all-databases >alldatabases.dump
5.将备份的文件alldatabases.dump恢复到数据库中
mysql -uroot -pyu < alldatabases.dump

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

<二>.python—mariadb

在python中可以使用pymysql.connect()方法创建Connection对象,该方法的常用参数如下:

对象用法
host连接的数据库服务器主机名,默认为本地主机(localhost);字符串类型(String)
user用户名,默认为当前用户;字符串类型(String)
passwd密码,无默认值;字符串类 (String)
db数据库名称,无默认值;字符串类型(String)
port指定数据库服务器的连接端口,默认为3306;整型(int)
charset连接字符集;字符串类型(String)
  • Connection对象常用的方法
方法说明
cursor()使用当前连接创建并返回游标
commit()提交当前事务
rollback()回滚当前事务
close()关闭当前连接
cursor对象用法
execute()执行数据库查询或命令
executemany()插入多条
import pymysql
#1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名
    user="root",            # 连接用户
    passwd="yu",            # 用户密码
    db="py_stud",           # 连接数据库
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
)
#2.创建游标对象;必须有一个游标对象, 用来给数据库发送sql语句, 并执行的
cur=conn.cursor()
try:
    crea_sql1="create table if not exists " \
              "php(name varchar(20),age int) default charset=utf8;"
    crea_sql2="insert into php values('小明',13);"
    cur.execute(crea_sql1)
    cur.execute(crea_sql2)
except Exception as e1:
    print("创建数据表失败:", e)
else:
    print("创建数据表成功:")

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在这里插入图片描述

2>.使用python在数据库中创建一个数据表,并且插入数据表数据

import pymysql
# 1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名
    user="root",            # 连接用户
    passwd="yu",            # 用户密码
    db="py_stud",           # 连接数据库
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
)
# 2.创建游标对象;必须有一个游标对象, 用来给数据库发送sql语句, 并执行的
cur=conn.cursor()
try:
    info=[("kai%s" %(i) ,i) for i in range(4)]
    ##############方法一##################
    # insert_sql1="insert into php values('%s',%s);"
    # for item in info:
    #     print("insert语句:",insert_sql1 %item )
    #     cur.execute(insert_sql1 %item)
	##############方法二##################
    insert_sql1="insert into php values(%s,%s);"
    cur.executemany(insert_sql1,info)
except Exception as e2:
    print("插入多条数据失败:",e)
else:
    print("插入多条数据成功:")

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在这里插入图片描述

3>.使用python查询数据库内容和游标指针的移动

import pymysql
# 1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名
    user="root",            # 连接用户
    passwd="yu",            # 用户密码
    db="py_stud",           # 连接数据库
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
)
# 2.创建游标对象;必须有一个游标对象, 用来给数据库发送sql语句, 并执行的
cur=conn.cursor()
try:
    sqli="select * from php;"
    resu=cur.execute(sqli)
############### 1.数据库查询 ##################
    print(resu)         # 默认不返回查询结果集, 返回数据记录数
    print(cur.fetchone())   # 获取下一个查询结果集
    print(cur.fetchmany(3)) # 获取制定个数个查询结果集
    print(cur.fetchall())   # 获取所有的查询结果
    print(cur.rowcount)     # 返回执行sql语句影响的行数
###############  2.数据库游标指针的移动#############
    print("正在移动指针到最开始......")
    print(cur.scroll(0,"absolute"))
    print(cur.fetchmany(3))
    print("正在移动指针到倒数第2个......")
    # 2:表示当前位置向后移动2行;-2:表示当前位置向前移动2行
    cur.scroll(2, mode='relative')
    print(cur.fetchall())
except Exception as e2:
    print("插入多条数据失败:",e)
else:
    print("数据成功:")

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

在这里插入图片描述

4>.使用python获取数据库的数据表的字段名和信息

import time
import pymysql
# 1. 连接数据库,
conn = pymysql.connect(
    host="localhost",       # 连接主机名
    user="root",            # 连接用户
    passwd="yu",            # 用户密码
    db="py_stud",           # 连接数据库
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
)
# python, 必须有一个游标对象, 用来给数据库发送sql语句, 并执行的.
# with语句实现的效果是: with语句执行结束, 如果成功, 则提交改变的数据, 如果不成功, 则回滚.
with conn:
    # 1.判断是否连接?
    print(conn.open)
    # 2. 创建游标对象,
    cur = conn.cursor()
    # 3).执行数据库语句
    sqli = "select * from php;"
    result = cur.execute(sqli)  # 默认不返回查询结果集, 返回数据记录数。
   # 显示每列的详细信息
    des = cur.description
    print("表的描述:", des)
    # 获取表头
    print("表头:", ",".join([item[0] for item in des]))
    cur.close()
conn.close()
print("with语句之外:", conn.open)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值