一. 數據庫
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是表的屬性名
測試: