我是靠谱客的博主 俏皮战斗机,最近开发中收集的这篇文章主要介绍PyMysql整理笔记Python+MySQL,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

zip函数(将多个可迭代对象解耦)

a = [1,3,5,7,9]
b = [2,4,6,8,10]
c = [11,12,13,14]
for itemA,itemB,itemC in zip(a,b,c):
print(itemA,itemB,itemC)
#打印结果:
1,2,11
3,4,12
5,6,13
7,8,14

数据库

排名名称类型主导公司
1OracleRelational DBMSOracle
2MySQLRelational DBMSOracle
3Microsoft SQL ServerRelational DBMSMicrosoft
4MongoDBDocument storeMongoDB

MySQL是开源、免费的关系型数据库**

SQL语句分为三类:

  1. DDL:数据定义语言
    1)数据库相关
*创建数据库
**create** database if not exists 数据库名
*删除数据库
**drop** database 数据库名
*查看数据库
**show** databases;
*定义数据库的字符集
**create** database if not exists 数据库名 default charset=utf8
*进入到某个数据库
**use** 数据库名

2)表相关

*创建表
**create** table if not exists 表明(
字段1 字段类型(字段的长度) 字段属性 字段约束,
字段2 字段类型(字段的长度) 字段属性 字段约束,
......);
*查看表结构
**desc** 表名
*查看数据表
**show** tables;
*删除表
**drop** table if not exists 表明
*修改表名
alter table 旧表名 **rename as** 新表名
*修改字段名
alter table 表名 **change** 旧字段名 新字段名 字段类型及属性
*修改字段类型
alter table 表名 **modify** 字段名 字段类型属性
*添加字段
alter table 表名 **add** 字段名 字段类型及属性
*删除字段
alter table 表名 **drop** 字段名
数据表字段的约束类型
主键:`primary key`
唯一:`unique`
自增长:`auto_increment`
外键:`foreign key`
`添加主键约束`
create table if not exists `表名`(
字段1 类型(长度) primary key)
`添加唯一约束`
create table if not exists `表名`(
字段1 类型(长度) unique)
`添加自增长约束`
create table if not exists `表名`(
字段1 类型(长度) auto_increment)
`添加外键约束`
1)建表时添加
CREATE TABLE `表名` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2)建表之后添加
alter table 从表 add constraint FK_ID foreign key(从表某字段) references 主表(主表某字段)
3)注意事项
1.主表中的字段只能有主键约束时才能添加外键
2.需要添加外键约束的表的类型必须是InnoDB
*指定表的类型
create table if not exists 表名(
字段1 字段类型(字段的长度) 字段属性 字段约束,
字段2 字段类型(字段的长度) 字段属性 字段约束,
......)engine=InnoDB/MyISAM
*字段注释和字段默认值
create table if not exists 表名(
字段1 类型(长度)字段属性 字段约束 comment "注释" default 默认值
  1. DML:数据管理语言

*添加数据

1)指定字段名
**insert into** 表名(字段1,字段2...)values(值1,值2...)
2)不指定字段名
**insert into** 表名 values(值1,值2...)
#values中给定数据的个数必须与字段数相同
3)同时添加多条数据
insert into 表名 values(值1,值2,...),(值1,值2...)...

*删除数据

1)条件删除
delete from 表名where condition
2)删除所有数据
delete from 表名
truncate [table] 表名
**区别**:delete删除数据后索引不会重置
truncate会将索引重置

*更新数据

1)根据条件更新部分数据
update 表名 set 字段1=values1,字段2=values2,...where condition
2)更新所有数据
update 表名 set 字段1=values1,字段2=values2,...

*查询数据

01)无条件查询
001->查询表中所有数据
select * from 表名
# *代表所有字段
002->查询指定的字段
select 字段1,字段2,字段3... from 表名
02) 条件查询
001->语法
select * from 表名 where condition
002->查询条件
(1)between...and... 查询字段在某一区间内的所有记录
(2)is null
查询字段值为null的所有记录
(3)is not null 查询字段值不为null的所有记录
(4)like
模糊匹配,查询字段中出现给定字符的所有记录
(5)in
查询字段的值在某个集合内的所有记录("张三",“李四”)
(6)条件1 and 条件2...
查询同时满足条件1,条件2,...所有记录数
(7)条件1 or 条件2...
查询满足条件1至条件n中某一个条件的所有记录
(8)not 条件1
查询不符合条件1所有记录
(9)条件1 xor 条件2
查询不同时满足条件1和条件2的所有记录
(10)算术运算符
<
>
=
>=
<=
(!=
<>)
003->分组查询
select 字段1,字段2,... from 表名 group by 字段x
按照字段x对查询到的数据进行分组
eg: select c_id,c_name,c_madein from commodity **group by** c_madein
将查询到的商品按产地进行分组
004->分页查询(每页显示记录数pageNum)
select * from commodity **limit** (page-1)*pageNum,pageNum
005->排序
select * from commodity **order by**
c_inprice asc/desc
对查询到的结果按照进价进行升序/降序排列
006->子查询:已知数码产品的商品分类的ct_id=0,根据该条件从商品表中查询出所有的数码产品
select * from commodity where c_type=(
select ct_id from commoditytype where ct_name="数码产品")

007->链表查询

表a数据
id
name
1
a
2
aa
4
aaaa
表b数据
id
name
1
b
2
bb
3
bbb
001->左链表查询
select * from a left join b on a.id=b.id
结果:
id
name
id
name
1
a
1
b
2
aa
2
bb
4
aaaa
002->内链表查询
select * from a inner join b on a.id=b.id
结果:
id
name
id
name
1
a
1
b
2
aa
2
bb
003->右链表查询
select * from a right join b on a.id=b.id
id
name
id
name
1
a
1
b
2
aa
2
bb
3
bbb
004->全链接(若a有m行数据,b有n行数据,则结果有m*n行数据)
select * from a inner/full join 
  1. 函数
001->求和函数:sum()
select sum(c_num) as "所有商品库存" from commodity
查询所有商品进货量的总和
002->求平均:avg()
select avg(c_inprice) as "进价均值" from commodity
查询所有商品进价的均值
003->count()
1.查询表中所有记录数
select count(*) from 表名
2.查询某个字段不为null值的所有记录数
select count(c_num) as "进货量不为null的商品种类数" from 表名
3.max()/min()
select max(字段名) from 表名

3.DCL:数据管理语言

Python+MySQL

  1. pymysql的安装
    pip install pymysql
  2. 使用pymysql链接mysql数据库
    导入模块
    import pymysql
    链接数据库
    connect = pymysql.connect(host=”“,user=”“,password=”“,db=”“,charset=”“)
    cursor = connect.cursor()
  3. 执行和提交sql语句
    sql = “Insert into tableName values(‘%s’,’%d’)”
    cursor.execute(sql%(value1,value2))
    connect.commit()
  4. 处理结果集
    01->获取结果集中所有数据
    all=cursor.fetchall()
    02->获取结果集中一条数据
    one=cursor.fetchone()
    03->获取结果集中多条数据
    many=cursor.fetchmany(size=?)
  5. 如何获取表头
    field=cursor.description
  6. 关闭链接
    cursor.close()
    connect.close()
  7. 用python+mysql实现分页查询

最后

以上就是俏皮战斗机为你收集整理的PyMysql整理笔记Python+MySQL的全部内容,希望文章能够帮你解决PyMysql整理笔记Python+MySQL所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部