IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql--(python23) -> 正文阅读

[大数据]mysql--(python23)

1. MySQL

关系型数据库
使用pymysql包进行操作

1.1 连接查询操作

注意:

首先就是数据库的远程连接,假若是本地得到连接就是localhost
连接的关闭close
还有就是pycharm的pymysql包的安装

在这里插入图片描述

在这里插入图片描述

"""
ubuntu的MySQL在windows进行连接
grant all on *.* to root@'%' identified by '123456' with grant option;
修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address		= 0.0.0.0

一个数据库连接对象可以创建多个游标对象
一般情况下,同一时刻,只会建立一个游标进行操作
"""


import pymysql

# 1.创建数据库连接对象
connect_db = pymysql.connect(host='192.168.3.88', port=3306, user='root', password='123456', charset='utf8',
                             database='jing_dong')

# 2.获取游标对象
cur = connect_db.cursor()

# 3.编写数据库的操作指令
# sql_str = '''select * from goods where name = "超极本" '''
sql_str = '''select * from goods'''

# 3.2执行
row_count = cur.execute(sql_str)
print('查询到的记录:', row_count)

# 3.3获取一条的查询结果
result = cur.fetchone()
print(result)
print("*" * 10)
# 3.4 获取指定的
result1 = cur.fetchmany(4)
for t in result1:
    print(t)

print("*" * 20)
# 3.5 获取所有的数据
result2 = cur.fetchall()
for v in result2:
    print(v)
# 4.关闭游标
cur.close()

# 5.关闭数据库
connect_db.close()

1.2 插入数据

注意:

这个时候就涉及到了数据库的事务
操作完成了需要commit提交,这个是connect的操作,不是游标的操作

"""

"""

# 导包
import pymysql

connect_db = pymysql.Connect(host='192.168.3.88', port=3306, user='root', password='123456', charset='utf8',
                             database='jing_dong')

cur = connect_db.cursor()

# 数据的插入
sql_str = '''insert into goods(name,cate_id,brand_id) values('神州笔记本',1,1);'''

cur.execute(sql_str)

# 事务,执行以后commit 提交是数据库对象的凑哦,不是游标的操作
# 提交要放在执行以后
connect_db.commit()

cur.close()
connect_db.close()

1.3 更新与删除操作

import pymysql

connect_db = pymysql.connect(host='192.168.3.88', port=3306, user='root', password='123456', charset='utf8',
                             database='jing_dong')

cur = connect_db.cursor()

# 更新
# sql_str = ''' update goods set cate_id=8 where id =22; '''

# 删除
sql_str = ''' delete from goods where id = 21; '''

cur.execute(sql_str)

connect_db.commit()

cur.close()

connect_db.close()

2. Sql注入问题

2.1 sql注入的产生

import pymysql

connect_db = pymysql.connect(host='192.168.3.88', port=3306, user='root', password='123456', charset='utf8',
                             database='jing_dong')

cur = connect_db.cursor()

select_id = input('请输入要查询的id:')
# 当我们输入 1 or 2的时候就会把所有的信息打印出来,解决办法,参数列表
sql_str = ''' select * from goods where id = %s; ''' % select_id

cur.execute(sql_str)

result = cur.fetchall()
for t in result:
    print(t)


cur.close()

connect_db.close()

解决:利用execute方法的第二个参数

import pymysql

connect_db = pymysql.connect(host='192.168.3.88', port=3306, user='root', password='123456', charset='utf8',
                             database='jing_dong')

cur = connect_db.cursor()

select_id = input('请输入要查询的id:')
# 当我们输入 1 or 2的时候就会把所有的信息打印出来,解决办法,参数列表
sql_str = ''' select * from goods where id = %s; '''


# 元组的方式,也可以使用列表和字典,但是不推荐字典的方式
# cur.execute(sql_str,(select_id,))
parms = (select_id,)
cur.execute(sql_str,parms)

# 列表
# parms = [select_id]
# cur.execute(sql_str,parms)

result = cur.fetchall()
for t in result:
    print(t)


cur.close()

connect_db.close()

3.mysql的一些使用

3.1 索引的建立

查看索引

show index from 表名;

创建索引

alter table 表名 add index 索引名称(字段名称);
alter table goods add index catex_id(caye_id);

删除索引

alter table goods drop index catex_id;

性能的测试:

-- 开启运行时间监测:
set profiling=1;
-- 查找第1万条数据ha-99999
select * from test_index where title='ha-99999';
-- 查看执行的时间:
show profiles;
-- 给title字段创建索引:
alter table test_index add index (title);
-- 再次执行查询语句
select * from test_index where title='ha-99999';
-- 再次查看执行的时间
show profiles;

联合索引

alter table teacher add index (name,age,sex);

最左原则
这个时候只会有name,(name,age),(name,age,sex)这三个联合索引

查看查询的次数

desc 查询语句;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:15:00  更:2022-04-06 23:17:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:53:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码