數據庫(四) sql注入問題

數據庫

pymysql操做mysql

安裝數據庫

pip install pymysqlmysql

鏈接

==鏈接數據庫的參數:==sql

conn = pymysql.connect(host='lpcalhost',user='rppt',password='123',database='test',chaarset='utf8',)
#coursor=conn.cursor()默認返回的值是元組類型
cursor = conn.cursor(cirsor=pymysql.cursors.DictCursor) #返回值是字典類型

pymysql的sql注入問題

用戶能夠不經過密碼或者用戶名就能登陸數據庫

==產生的緣由:==由於過於相信用戶輸入的內容,根本沒有作任何效驗。fetch

==解決方法:==優化

經過格式化輸出方式將用戶名和密碼作優化,客戶必須輸入纔會進行效驗。《sql = "select *from user where name=%s and password=%s" cursor.execute(sql,(user,pwd))》code

pymysql增長數據

sql="inster into user(name,password) values(%s,%s)"
#cursor.execute(sql,('xxx','qwe'))##新增一條數據

data=[
    ('nick','123')
    ('tank','123')
    ('saon','123')
]
cursor.executemany(sql,data)##新增多條數據
###加以下代碼塊
conn.commit()
print(cursor.lastrowid) ##獲取最後一行的id值

pymysql修改數據

sql='updata user set name=%s where id=%s'
cursor.execute(sql,('dgsahdsa',2))
conn.commit()
cursor.close()
conn.close()

pymysql查看數據

fetchall():取出全部的數據  返回的是列表套字典
fetchone():取出一條數據,返回的是字典
fetchmany(size):取出size條數據,返回的是列表套字典

pymysql刪除數據

sql = 'delete from user where id=%s'
cursor.execute(sql,('dgsahddsa',2))
conn.commmit()
sursor.close()
conn.close()

索引

基礎
  1. 索引的做用就是爲了提升查詢效率索引

  2. 索引的本質是一個特殊的文件ip

  3. 索引的原理 B+樹ci

  4. 索引的種類:

    主鍵索引:加速查找+不能重複+不能爲空 primary key

    惟一索引:加速查找+不能重複 unique(name)

    ​ 聯合惟一索引:unique(name,email),例:akon 123@.com

    普通索引:加速查找 index(name)

    ​ 聯合索引:index(name,email)

建立

==主鍵索引:==

新增主鍵索引:

create table xxx(id int auto_increment primary key)

alter table xxx change id id int auto_increment

primary key;

alter table t1 add primary key(id)

刪除主鍵索引:

mysql>alter table t1 drop primary key;

==惟一索引:==

新增:

  1. create table t2(id int auto_increment primary key,name varchar(32) not null default ",unique u_name(name))charset utf8

  2. creat unique index 索引名 on 表名(字段名);

    create unique index is_name on t1(name);

  3. alter table t2 add unique index ix_name(name)

刪除:

​ alter table t2 drop index u_name;

==普通索引:==

新增:

  1. create table t3(id int auto_increment primary key,

    name varchar(32) not null default",

    index u_name(name))charset utf8

  2. create index 索引名 on 表名(字段名);

    create index ix_name on t3(name);

  3. alter table t3 add index ix_name(name)

刪除:

alter table t3 drop index u_name;

==索引的優缺點==

優勢:提升查詢效率

缺點:加索引後,會佔用大量的磁盤空間

相關文章
相關標籤/搜索