【python零基础入门学习】python进阶篇之数据库连接-PyMysql-全都是干货-一起来学习吧!!!(1)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

安装依赖包

[root@localhost packages]# yum install -y gcc

[root@room8pc16 day02]# mkdir ~/.pip/

[root@room8pc16 day02]# vim ~/.pip/pip.conf

[global]

index-url = http://pypi.douban.com/simple/

[install]

trusted-host=pypi.douban.com

### 本地安装:

注意:需要在虚拟环境中安装

ls /linux-soft/05/

zzg_pypkgs.tar.gz

tar xf zzg_pypkgs.tar.gz

cd zzg_pypkgs

pip install pymysql_pkgs/*

进入正文:数据库

数据库:

你正在为一个小型公司编写基础数数据库,数据库需要记录员工,部门和发工资的信息.

收集字段:姓名,性别,联系方式,部门,出生日期,工资日,底薪,奖金,实发工资

数据库范式:

数据库范式有第一范式、第二范式、第 三范式、巴斯-科德范式、第四范式、第五范式六种

所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原>子性的,即数据库表的每一列都是不可分割的原子数据项。如联系方式不能成为一个字段,

需要将其拆分成家庭住址、电话号码、email等。

第二范式(2NF)是在第一范式(1NF) 的基础上建立起来的,即满足第二范式(2NF)必须

先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须 可以被>唯一地区分。简单来说就是每个表需要有个主键

员工表:员工ID、姓名、出生日期、email、部门ID

部门表:部门ID、部门名

工资表:id、工资日、员工ID、底薪、奖金、实发工资

第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。简单来说>,非主字段,不能依赖其他非主字段。实发工资是由底薪、奖金算出来的,所以它不应该出

现在数制库中。用的时候,应该是通过程序计算。

[root@room8pc16 day02]# mysql -uroot -ptedu.cn

MariaDB [(none)]> CREATE DATABASE nsd1907 DEFAULT CHAR SET utf8;

grant all on *.* to root@‘192.168.1.%’ identified by ‘123qqq…A’ ;

pymsql操作数据库

  • 连接

  • 创建游标。游标就像是文件对象,通过文件对象可以对文件实施读写操作,通过游标就可

以对数据库进行增删改查。

  • 执行SQL语句

  • 如果执行的语句是增删改,必须commit确认

  • 关闭

连接数据库

import pymysql

#创建链接
conn=pymysql.connect(
host='192.168.1.100',
port=3306,
user='root',
passwd='123qqq...A',
db='nsd1907',
charset='utf8')

#创建游标
cur = conn.cursor()

# 编写SQL语句
create_dep = """CREATE TABLE departments(
dep_id INT, dep_name VARCHAR(20),
PRIMARY KEY(dep_id)
)"""
create_emp = """CREATE TABLE employees(
emp_id INT, emp_name VARCHAR(20), birth_date DATE,
email VARCHAR(50), dep_id INT,
PRIMARY KEY(emp_id),
FOREIGN KEY(dep_id) REFERENCES departments(dep_id)
)"""
create_sal = """CREATE TABLE salary(
id INT, date DATE, emp_id INT,
basic INT, awards INT,
PRIMARY KEY(id),
FOREIGN KEY(emp_id) REFERENCES employees(emp_id)
)"""

# 执行SQL语句
cur.execute(create_dep)
cur.execute(create_emp)
cur.execute(create_sal)

# 确认提交
conn.commit()

# 关闭
cur.close()
conn.close()


增删改查

#增删改查

import pymysql

#创建链接
conn=pymysql.connect(
host='192.168.1.100',
port=3306,
user='root',
passwd='123qqq...A',
db='nsd1907',
charset='utf8')

#创建游标
cur = conn.cursor()

# # 创建部门
# insert1 = "INSERT INTO departments VALUES(%s, %s)"
# cur.executemany(insert1, [(1, '人事部')])
# #cur.executemany(insert1, (1, '人事部'))
#cur.executemany(insert1, [(2, '运维部'), (3, '开发部'), (4, '测试部')])
# cur.executemany(insert1, [(4, '测试部'), (5, '市场部'), (6, '销售部')])

#insert1 = "INSERT INTO departments VALUES(9, '人事部3'),(10,'人事部4')"
#cur.execute(insert1)


#更新部门,将人事部改为人力资源部
# update1 = "UPDATE departments SET dep_name=%s WHERE dep_name=%s"
# cur.execute(update1, ('人力资源部', '人事部'))

# # 删除4号部门
# del1 = "DELETE FROM departments WHERE dep_id=%s"
# cur.execute(del1, (4,))

#查询
select1 = "SELECT * FROM departments"
cur.execute(select1)
result1 = cur.fetchone()#取一个记录
print(result1)
print('*' * 30)
result2 = cur.fetchmany(2)#继续取两个记录
print(result2)
print('*' * 30)
result3 = cur.fetchall()#取出剩余全部记录
print(result3)

# 执行SQL语句
# cur.execute(create_dep)
# cur.execute(create_emp)
# cur.execute(create_sal)

# 确认提交
conn.commit()

# 关闭
cur.close()
conn.close()


游标

SQLAlchemy:

  • sqlalchemy采用ROM管理数据库
  • O:Object 对象
  • R:relational 关系
  • M: Mapping 映射
  • sqlalchemy 将一个class与数据中的一张表相关联
  • sqlalchemy将类变量与表的字段关联
  • sqlalchemy将数据库的各种数据类型定义成了相关的class
  • sqlalchemy将class的实例与表的记录关联

now( ) year( ) month( ) day( ) date( ) time( ) datetime curtime( ) curdate( )

安装

#安装

pip install sqlalchemy_pkgs/*

连接数据库

mysql> CREATE DATABASE tedu1907 DEFAULT CHAR SET utf8;
mysql> show grants for root@'192.168.1.%';

dbconn.py:

from sqlalchemy import create_engine,Column,Integer,String,Date,ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建到mysql数据库的连接引擎
engine = create_engine(
    'mysql+pymysql://root:123qqq...A@192.168.1.100/tedu1907?charset=utf8',
    encoding = 'utf8',


![img](https://img-blog.csdnimg.cn/img_convert/2ba9ecb28e891c75509f2425a374c565.png)
![img](https://img-blog.csdnimg.cn/img_convert/6e1909290e2f82ce1696cc999888c948.png)
![img](https://img-blog.csdnimg.cn/img_convert/ec3d44d82e63feac16e1c5ce8572e4e2.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

[外链图片转存中...(img-WfdJLrc8-1715289279786)]
[外链图片转存中...(img-AFnQym30-1715289279786)]
[外链图片转存中...(img-y6pHSLPR-1715289279786)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值