python(linux)---mariadb

<一>.linux—mariadb

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

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;
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));

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;

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数据库

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

<二>.python—mariadb

1>.使用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:
    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("创建数据表成功:")

在这里插入图片描述

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("插入多条数据成功:")

在这里插入图片描述

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("数据成功:")

在这里插入图片描述

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)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值