一. 数据库
1. mariadb的安装与使用
yum install -y mariadb-server #安装
systemctl start mariadb
mysql_secure_installation #初始化并设定密码
mysql -uroot -p密码
2. 数据库基本操作
show databases; #查看库
create database hello; #创建库
use hello; #进入库
show tables; #查看表
create table userinfo(); #创建表
desc userinfo; #列出表头
insert into userinfo values("user1","123"); #插入信息
select * from userinfo; #查看表
注:mariadb中文编码出现问题
update userinfo set password="345" where username="user1"; #更新表信息
delete from userinfo where username="user1"; #删除表信息
drop table userinfo; #删除表
drop database hello; #删除库
注:配置文件为/etc/my.cnf
3. 中文编码问题
永久设置:
client:vim /etc/my.cnf.d/client.cnf
[client]
default-character-set=utf8
server:vim /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server=utf8
systemctl restart mariadb
临时设置:
show variables like "char%"; #查看编码格式
set character_set_database="utf8"; #修改数据库默认的编码改为utf8
set character_set_server="utf8";
eg:
二. python中数据库的操作
yum search python | grep -i 'mysql'
yum install MySQL-python.x86_64 -y
1. 建立MySQL连接
import MySQLdb as mysql #导入MySQLdb模块并起别名mysql
mysql.connect(user="root",passwd="redhat",host='127.0.0.1',charset='utf8')
2. MySQL连接操作及游标操作
cur = conn.cursor() #创建游标指针
conn.select_db('sky') #选择进入数据库
cur.execute("select * from skyinfo;") #执行单条 sql 语句
cur.execute('insert into skyinfo values("user2","123");') #执行单条 sql 语句
conn.commit() #如果数据库表进行了修改,提交保存当前的数据
检测:
cur.close() #关闭游标
conn.close() #断开连接
3. 多条语句执行
方法一:多次执行,但效率低
cur.execute('insert into userinfo values("user", "123");')
方法二:选择传入变量, 然后for循环执行
sqli = 'insert into skyinfo values("%s", "%s");' %("user", "123")
cur.execute(sqli)
方法三:executemany方法, 直接传入列表, 实现数据多行添加
executemany(query, args): 执行单条 sql 语句 , 但是重复执行参数列表里的参数 , 返回值为受影响的行数
li = [("user5", "123"), ("user6", "234"), ("user7", "456")]
sqli = 'insert into skyinfo values("%s","%s");'
for i in li:
cur.execute(sqli, i)
cur.executemany(sqli,li)
4. 查看表内容
1>fetchone() 查看一条信息, 指针向后移动
2>scroll() 移动指针
scroll(value, mode='relative'): 移动指针到某一行
如果 mode='relative', 则表示从当前所在行移动 value 条
如果 mode='absolute', 则表示从结果集的第一行移动 value 条
3>fetchmany(n) 显示n条信息
4>fetchall() 显示所有信息
eg1:
随机生成10个人名和对应的密码,人名由三个汉字或者2个汉字组成,密码统一6位, 由字母和数字组成,存储至数据库sky的skyinfo表中
检测:
eg2:判断某个数据库表是否存在
eg3:封装MySQLdb
1>封装一个数据库类为MyMySQL
2>实例化对象时, 自动连接数据库, 自动创建游标
3>删除实例化对象时, 自动关闭游标, 断开数据库连接
4>编写select_table(self, table_name, num)方法, 显示该表里面的n条数据
5>编写create_table(self, table_name, **attr )方法, 实现创建表, 创建前判断表是否存在, **attr是表的属性名
测试: