python学习之老男孩python全栈第九期_数据库day004知识点总结 —— MySQL数据库day4
复习:
1. MySQL:文件管理的软件
2. 三部分:
- 服务端
- SQL语句
- 客户端
3. 客户端:
- MySQL
- navicat
4. 授权操作:
- 用户操作
- 授权操作
5. SQL语句
- 数据库操作
- 创建数据库要指定字符编码:
create database xx default charset=utf8;
- 删除数据库:
drop database xx; - 数据表操作
- 列
- 数字
整数
小数
- 字符串
- 时间
datatime
- 二进制
- 其他:引擎、字符编码、起始值 - 主键索引
- 唯一索引
- 外键
- 一对多
- 一对一
- 多对多 PS:数据放在硬盘上 - 数据行操作
- 增
- 删
- 改
- 查
- in not in
- between and
- limit
- group by having
- order by
-desc
-asc
- like '%a'
- left join xx on 关系
- inner join
- 临时表
select * from(select * from tb1 where id<10) as B; PS:笛卡尔积
a:三条数据 1 2 3
select * from a as a1,a as a2;
1 1、1 2、1 3、2 1、2 2、2 3、3 1、3 2、3 3
一. 练习题讲解
1. 去重:distinct -- 效率不高
SELECT distinct student.sid,student.sname from score LEFT JOIN student ON score.student_id=student.sid where score.num<60;
二. pymysql模块:
pip3 install pymysql -i https://pypi.douban.com/simple
python模块:对数据库进行操作(SQL语句)
import pymysql '''
user = input('username:')
pwd = input('possword:') conn = pymysql.connect(host='localhost', user='root', password='lpg123456', database='db1') # 打开数据库
cursor = conn.cursor() # 游标
# 连接数据库成功
sql = "select * from userinfo where username = %(u)s and password = %(p)s "
cursor.execute(sql, {'u': user, 'p': pwd})
result = cursor.fetchone() cursor.close()
conn.close() if result:
print('登录成功')
else:
print('登录失败') ''' # 增 删 改 '''
conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor()
sql = "insert into userinfo(username, password) values('egon','123456')"
cursor.execute(sql) conn.commit() # 提交 增 删 改 需要用commit cursor.close()
conn.close()
''' ''' user = 'wusir'
pwd = '123456'
conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor()
# sql = "insert into userinfo(username, password) values(%s,%s)"
# cursor.execute(sql,[user,pwd]) # 增加多个
sql = "insert into userinfo(username, password) values(%s,%s)"
# r:受影响的行数
r = cursor.executemany(sql,[('laoyao','sb'),('taibai','SB')]) # 只适用于insert conn.commit() # 提交 增 删 改 需要用commit cursor.close()
conn.close() ''' # 查 ''' conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 默认cursor为None,改成以字典形式打印 sql = "select * from userinfo limit 10"
# r:受影响的行数
cursor.execute(sql) # result = cursor.fetchone() # 一次取一个
# print(result)
#
# result = cursor.fetchone()
# print(result)
#
# result = cursor.fetchone()
# print(result) # result = cursor.fetchmany(4) # 一次取多个
# print(result) result = cursor.fetchall() # 一次取所有
print(result)
# [{'id': 1, 'username': 'alex', 'password': '123456'}, {'id': 2, 'username': 'egon', 'password': '123456'}, {'id': 5, 'username': 'wusir', 'password': '123456'}, {'id': 6, 'username': 'laoyao', 'password': 'sb'}, {'id': 7, 'username': 'taibai', 'password': 'SB'}] cursor.close()
conn.close() ''' # 新插入数据的自增ID :cursor.lastrowid conn = pymysql.connect(host='localhost',user='root',password='lpg123456',database='db1')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = "insert into userinfo(username,password) values('asdsafd','467467')"
cursor.execute(sql)
conn.commit()
print(cursor.lastrowid) cursor.close()
conn.close()
- 连接、关闭(游标)
- execute() --> SQL注入问题
- 增删改 : conn.commit()
- fetchone()
- fetchmany()
- fetchall()
- 获取插入数据的自增ID:lastrowid
python学习之老男孩python全栈第九期_数据库day004知识点总结 —— MySQL数据库day4的更多相关文章
- python学习之老男孩python全栈第九期_第一次周末考试题(over)第三次添加完毕
day 6python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合 ...
- python学习之老男孩python全栈第九期_数据库day005知识点总结 —— MySQL数据库day5
三. MySQL视图(不常用) 给某个查询语句设置个别名(视图名),日后方便使用 - 创建: create view 视图名 as SQL; PS:视图是虚拟的 - 修改: alter view 视图 ...
- python学习之老男孩python全栈第九期_数据库day002知识点总结 —— MySQL数据库day2(全部)
一. 复习1. MySQL: - 服务端 - 客户端2. 通信交流 - 授权 - SQL语句 - 数据库 创建数据库: create database db1 default charset utf8 ...
- python学习之老男孩python全栈第九期_第二周学习总结
迭代器 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的 1. 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir(数据) ) 可迭代的 ...
- python学习之老男孩python全栈第九期_数据库day002 -- 作业 (数据库为day001创建的数据库)
1.自行创建测试数据 对score表进行优化: 添加数据: 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 为了方便做题,额外增加几条数据 查询: 3.查询平均成绩大于60分的同学的学号和 ...
- python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建
一. 学习SQL语句规则以及外键 1. 操作文件夹 create database db2; 创建文件夹 create database db2 default charset utf8; 创建文件夹 ...
- python学习之老男孩python全栈第九期_数据库day004 -- 作业
https://www.cnblogs.com/YD2018/p/9451809.html 11. 查询学过“001”并且也学过编号“002”课程的同学的学号.姓名 select student.si ...
- python学习之老男孩python全栈第九期_数据库day003知识点总结 —— MySQL数据库day3
复习: 1. 增 insert into xx(name) values('root'),('xxx'); insert into xx(name) select id from tb1; 2. 自增 ...
- python学习之老男孩python全栈第九期_数据库day003 -- 作业
数据库: class: course: student: teacher: score: /* Navicat Premium Data Transfer Source Server : local ...
随机推荐
- pymongo学习第1篇——增删改查
参考文档: 1.https://docs.mongodb.org/getting-started/python/ 2.http://api.mongodb.org/python/current/api ...
- CISSP一次通过指南(文末附福利)
2017年12月19日,在上海黄浦区汉口路亚洲大厦17层通过了CISSP认证考试,拖拉了一年,终于成绩还算令人满意,为攒人品将自己一年多的复习心得和大家分享,希望能够帮到需要考证的朋友. 本文作者:i ...
- collectd+influxdb+grafana
今天一天都在弄这个,最终发现在配置grafana的时候选择influxdb的版本时候选错了.(挠头~~~!!!) collectd的配置还算简单,基本看过配置文件就比较清楚. influxdb(Go ...
- 【wireshark】插件开发(四):Lua插件Post-dissector和Listener
1. Post-dissector post-dissector和dissector不同,它会在所有dissectors都执行过后再被执行,这也就post前缀的由来.post-dissector的构建 ...
- Java 反射机制系列
http://www.cnblogs.com/KingIceMou/category/1034898.html
- activity和Task 有关的 Intent启动方式结合intent.setFlags()
通过设置Intent对象的标记,来改变当前任务堆栈中既存的Activity的顺序: FLAG_ACTIVITY_NEW_TASK----简而言之,跳转到的activity根据情况,可能压在一个新建 ...
- redis集群配置及运行命令(windows和centos)附Python测试范例代码
表示配置主服务器器的IP和端口 slaveof <masterip> <masterport> # 设置slave是否是只读的.从2.6版起,slave默认是只读的. slav ...
- 实用的百度下载神奇-proxyee-down
项目地址: https://github.com/monkeyWie/proxyee-down 一.下载适合你的版本 二.运行软件 三.安装证书 四.重启软件和浏览器(注意是浏览器不是客户端),就能看 ...
- manjaro开启sdd trim
$ sudo systemctl enable fstrim.timer; $ sudo systemctl start fstrim.service; $ sudo systemctl stat ...
- 回退Ubuntu记录
前言 由于Ubuntu18经常出错,因而决定回退Ubuntu16,下面是记录回退问题及美化,以便以后需要. 问题总结 磁盘挂载 挂载其他磁盘分区时,提示错误"Metadata kept in ...