操作mysql数据库常见方法
1、第三方库:pymysql
1.1、安装pymysql
终端输入:pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/
1.2、连接数据库
import pymysql
def connect():
# 连接数据库
conn = pymysql.connect(
host="localhost",
user="root",
password="123456"
)
print(conn)
return(conn)
# 调用
connect()
1.3、连接指定数据库
def connect_database(database):
# 连接数据库
conn = pymysql.connect(
host="localhost",
user="root",
password="123456",
database=database
)
print(conn)
return(conn)
connect_database("test")
1.4 创建数据库、创建表
# 创建数据库
def creatdatabase(databasename):
# 连接数据库
conn = pymysql.connect(
host="localhost",
user="root",
password="123456"
)
# 创建游标对象
cursor = conn.cursor()
# sql中使用变量,格式化输出
# 创建数据库
sql ="CREATE DATABASE IF NOT EXISTS {0}".format(databasename)
cursor.execute(sql)
# 展示所有数据库
cursor.execute("SHOW DATABASES;")
# 展示执行结果
for database in cursor:
print(database)
# 调用
creatdatabase("test")
# 创建表
def createtable():
conn = pymysql.connect(
host="localhost",
user="root",
password="123456",
database="test"
)
cursor = conn.cursor()
# 删除表格
cursor.execute("drop table if exists student")
# 创建表格
sql="create table student(id int auto_increment primary key, name varchar(20), class varchar(255))"
cursor.execute(sql)
# 调用
createtable()
1.5、表中插入数据
def insertdata():
conn = pymysql.connect(
host="localhost",
user="root",
password="123456",
database="test"
)
# 创建游标对象
cursor=conn.cursor()
# 插入数据sql,2种方式,推荐使用第一种占位符的方式,避免sql注入
# 方式一
addsheshou_sql="insert into student(name,class)values(%s, %s)"
addsheshou_value = ("luban", "1")
cursor.execute(addsheshou_sql,addsheshou_value)
# 方式二
addfashi_sql = "insert into student(name,class)values('anqila','2')"
cursor.execute(addfashi_sql)
# 提交
conn.commit()
# 查询语句
cursor.execute("select * from student where name='luban' ")
# 查看返回结果
res = cursor.fetchall()
print(res)
# 调用
insertdata()
查看数据库增加了2条数据(也可通过命令行窗口查看):
1.6、批量插入数据
def insertmany(database):
conn = connect_database(database)
# 创建游标对象
cursor=conn.cursor()
# 插入数据sql
addmany_sql="insert into student(name,class)values(%s, %s)"
addmany_values = (("huangzhong", "1"),("direnjie", "1"),("zhenji", "2"),("zhongwuyan", "3"))
cursor.executemany(addmany_sql,addmany_values)
# 提交
conn.commit()
select_showall(database, "select * from student")
insertmany('test')
查看数据库增加了多条数据(也可通过命令行窗口查看):
1.7、获取查询结果数据
常用方法:
fetchall() 获取所有的记录
fetchone()获取第一行记录
fetchmany(size)获取前几行记录
def select_showall(database,sql):
conn=connect_database(database)
# 创建游标对象
cursor = conn.cursor()
cursor.execute(sql)
# 每次执行cur.fetchone()语句,游标都会向下走,所以不能同时查询
# 查询所有记录
# allrows = cursor.fetchall()
# print(allrows)
# 查询多条记录
# manyrows = cursor.fetchmany(2)
# print(manyrows)
# 查询第一条数据
onerow = cursor.fetchone()
print(onerow)
print(type(onerow))
# 调用
select_showall('test','select * from student where class="1"')
1.8、防sql注入,sql语句中一般用占位符传值
def select_data(database):
conn=connect_database(database)
# 创建游标对象
cursor = conn.cursor()
# 避免sql注入
sql="select * from student where name=%s"
svalue=("luban",)
data=cursor.execute(sql,svalue)
print(data)
select_data('test')
2、标准库 :mysql.connector
2.1、安装mysql-connector
终端输入:pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple/
2.2、操作方法
实现的逻辑跟pysql一致,相同的操作,操作方法也一致