python中的MySQL數據庫

一. 數據庫

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是表的屬性名




測試:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章