12-Python数据库访问
在CentOS7上安装Mariadb
https://blog.csdn.net/NetRookieX/article/details/104734181
常用的增删改查
show databases; #查看数据库
create database test; #创建一个数据库,名字为test
use test; #进入数据库test
show tables; #查看当前数据库中的表
create table Student(name char(10),age int); #创建表,表名为Student,表中的字段有name和age
select * from Student; #查看表Student中的所有数据
insert Student value('Tom',18); #插入数据
delete from Student where age=18; #删除所有age为18的数据
安装模块pymysql
pip3 install PyMySQL
如果出现"ImportError: No module named setuptools"的错误提示,则:
下载
https://bootstrap.pypa.io/ez_setup.py
运行命令python3 ez_setup.py
PyCharm上安装,则参考:https://blog.csdn.net/NetRookieX/article/details/86259454
连接数据库
# -*- coding:utf-8 -*-
import pymysql
con = pymysql.connect(host="192.168.191.128",user="root",passwd="123456",db="test",charset="utf8")#打开数据库连接
#port=3306 #指定端口
#charset="utf8" #指定字符集(如果数据库操作含有中文)
cursor = con.cursor() #创建游标对象
try:
name='Bob'
age=20
r=cursor.execute('insert into Student values(%s,%s);',(name,age)) #执行命令
#r为受影响的行数
con.commit() #提交执行(查询不需要commit)
except:
print("出现错误")
con.rollback() #如果发生错误则回滚
cursor.close()
con.close()
查询数据库
# -*- coding:utf-8 -*-
import pymysql
con = pymysql.connect(host="192.168.191.128",user="root",passwd="123456",db="test",charset="utf8")#打开数据库连接
cursor = con.cursor() #创建游标对象
try:
r = cursor.execute('select * from Student;') # 执行命令
#r为受影响的行数
except:
print("查询错误")
#data = cursor.fetchone() #取一条结果(从内存中取)
data = cursor.fetchall() #取全部结果
#fetchmany(3) #取三条结果
#rowcount #只读属性,返回执行execute()后影响的行数
print (data) #打印数据
cursor.close()
con.close()
执行多条语句
r=cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)]) #执行多条语句
SQL注入
sql='select username,password from userinfo where username="%s" and password="%s"'
sql=sql %('root" or 1=1 -- ',123456) #无论用户名密码对不对,都能查询