当 Python 遇到数据库,这个模块就变得超级好用
大家好,今天我和大家来聊一下SQLALchemy
这个模块,该模块是Python
当中最有名的ORM
框架,该框架是建立在数据库API
之上,使用关系对象映射进行数据库的操作,简而言之便是:将对象转换成SQL
,然后使用数据API
执行SQL
并获取执行结果。
看到这里,相信不少的读者可能会感觉到云里雾里,我们就通过一个简单的案例在说明一下吧。喜欢记得收藏、关注、点赞
例如我们想要在mysql
当中新建一个表格,我们首先需要连接上数据库,代码如下
# 连接数据库
sql_connect = 'mysql+pymysql://root:123456@localhost:3306/sql_prac?charset=utf8'
engine = create_engine(sql_connect)
DBSession = sessionmaker(bind=engine)
# 创建对象的基类:
BaseModel = declarative_base()
定义表结构
对于新创建的表格,我们命名为是“User”,同时我们还需要定义表结构,代码如下
#定义对象
class User(BaseModel):# 表名__tablename__ = 'user'# 表结构,其中ID设为是主键,并且是自动增加的id = Column(Integer, primary_key=True, autoincrement=True)name = Column(String(20))age = Column(Integer)
创建以及删除表
对于创建表以及删除表的操作,代码如下
#创建映射的数据库表
def init_db():BaseModel.metadata.create_all(engine)#删除映射的数据库表
def drop_db():BaseModel.metadata.drop_all(engine)
插入数据
我们可以尝试往新建的表格当中插入几个值,代码如下
def insert_data(name_1, age_1):# 创建session对象,相当于MySQLdb里面的游标session = DBSession()# 创建新User对象:new_user = User(name=name_1, age=age_1)# 添加到session:session.add(new_user)# 提交添加数据的操作session.commit()# 关闭sessionsession.close()if __name__ == "__main__":insert_data(name_1="Mike", age_1=20)insert_data(name_1="John", age_1=35).......
运行后的结果如下图所示
查询
要是我们想要查询表格中的数据,可以这么来做
# 创建Session:
session = DBSession()
# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
user = session.query(User).filter(User.name == 'Tom').one()
# 打印类型和对象的name属性和age属性:
print(user.name, user.age)
# 关闭Session:
session.close()
要是调用的是all()
则返回所有行,因此我们需要通过for
循环遍历出来的结果然后打印,代码如下
users = session.query(User).filter(User.name == 'John').all()
for u in users:print(u.name, u.age)
更新和删除数据
我们尝试来更新表格中的一些数据,代码如下
# 创建Session:
session = DBSession()
# 可以进行多条数据更新
user = session.query(User).filter(User.id == 3)
user.update({User.age: 30})
# 提交数据
session.commit()
# 关闭Session
session.close()
通过“ID”来锁定要更新的数据的位置,然后我们通过调用update()
方法将其年龄改成指定的值。与此同时我们还可以来删除表格当中的一些值,代码如下
# 创建Session
session = DBSession()
# 删除哪些数据
user = session.query(User).filter(User.id == 5).one()
session.delete(user)
# 提交数据
session.commit()
# 关闭session
session.close()
同样我们也是通过“ID”来锁定要删除数据的位置,然后调用delete()
方法。
直接运行SQL
语句
当然我们在创建session
之后,我们也可以在里面直接运行SQL
语句,例如我们想要查看一下总共有哪些数据库,代码如下
session = DBSession()
print(session.execute('show databases').fetchall())
session.close()
或者我们是想返回表格中的所有数据,代码如下
session = DBSession()
print(session.execute('select * from user').fetchall())
session.close()
DataFrame
到MySQL
数据库
我们同时也可以批量的将excel
或者csv
文件当中的数据批量的导入到MySQL
数据库当中,我们先通过Pandas
读取文件中的数据,代码如下
sql_connect = 'mysql+pymysql://用户名:密码@ip地址:端口号/数据库名称?charset=utf8'
engine = create_engine(sql_connect)
df = pd.read_excel("sqlalchemy_test1.xlsx")
df.to_sql("user", engine, index=False, if_exists='append')
当然我们也可以从数据库的某个表格当中来读取数据,代码如下
df = pd.read_sql("表格名", engine)
print(df.head())
推荐文章
李宏毅《机器学习》国语课程(2022)来了
有人把吴恩达老师的机器学习和深度学习做成了中文版
上瘾了,最近又给公司撸了一个可视化大屏(附源码)
如此优雅,4款 Python 自动数据分析神器真香啊
梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学
年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)
技术交流
欢迎转载、收藏、有所收获点赞支持一下!
目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、发送如下图片至微信,长按识别,后台回复:加群;
- 方式②、添加微信号:dkl88191,备注:来自CSDN
- 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
当 Python 遇到数据库,这个模块就变得超级好用相关推荐
- python通过什么连接数据库_python中常用的各种数据库操作模块和连接实例
这篇文章主要介绍了python中常用的各种数据库操作模块和连接实例,包括sqlite3.oracle.mysql.excel,需要的朋友可以参考下 工作中,经常会有用python访问各种数据库的需求, ...
- cx_oracle主备服务器,怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作
怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作 发布时间:2021-03-17 16:32:34 来源:亿速云 阅读:67 作者:Leah 本篇文章为大家展示了怎么在Pyt ...
- python cx oracle 11g,怎么在python中使用cx_Oracle模块连接Oracle数据库
怎么在python中使用cx_Oracle模块连接Oracle数据库 发布时间:2021-03-29 18:08:05 来源:亿速云 阅读:65 作者:Leah 怎么在python中使用cx_Orac ...
- 浅谈Python自带数据库SQLite3模块的使用(全面详细)
目录 写在前面 一:使用数据库的宏观过程 二:数据库使用 1.导入数据库模块 2.打开数据库 2.1.在硬盘上建立数据库 2.2.在内存上建立数据库 3.创建游标 4.执行SQL语句 4.1.创建表 ...
- python学习,pip 模块-数据库(mysql)-excel操作-写日志-邮件-md5加密
#模块 # 标准模块 # python自带的 # 第三方模块 # pymysql # 自己写的python文件 # 导入模块的实质 # import my_model # 把导入的模块运行了一遍 # ...
- python随机数据库_关于Python的随机数模块,你必须要掌握!-后台/架构/数据库-敏捷大拇指-一个敢保留真话的IT精英社区...
所谓七夕 昨天的文章这个七夕节,用Python为女友绘制一张爱心照片墙吧!收获了最近以来最高的浏览量,没枉费我熬到夜里3点赶出来的热点文章.有付出就总会有所回报,只是看这天来的早晚而已.七夕一个人看这 ...
- 看Python应乎潮流的72变
软件业的特点,就是层出不穷的新东东涌现.Windows早就革了DOS的命,浏览器差不多革了桌面软件的命,云计算准备再革所有软件的命,最后还追上个乔布斯说一切听他的. 动荡的软件界,让人眼花缭乱.这一切 ...
- 五、使用Python操作数据库
(六)使用Python操作数据 程序运行时,数据是在内存中.当程序终止时,通常需将数据保存在磁盘上.为了便于程序保存和读取数据,并能直接通过条件快速查询到指定数据,数据库(Database)这种专门用 ...
- Python MySQL数据库交互
引言 本文介绍在 Python 中如何与 MySQL 数据库交互 利用 PyMySQL 数据库驱动,实现 MySQL 数据库的增删改查及事务处理 MySQL 简介 MySQL是一个关系型数据库管理系统 ...
最新文章
- 在线音乐电台Pandora股价暴涨20% CEO肯尼迪辞任
- 学数解题160919
- verilog基础--sign表达式
- linux_redhat_线程后台运行方法
- linux部署DM数据库的DEM系统
- 基于ASA防火墙的SSL ×××配置
- 制作一个大风车加载条
- nodejs libararies
- 编程实现类Logo语言(海龟语言)
- 那些惊艳了岁月的诗词
- Pose Estimation 入门理解
- 【渝粤教育】电大中专电子商务网站建设与维护 (6)作业 题库
- 国际证券市场发展简史(二)美国证券市场
- android.telex 涉及技术整理
- windows 10 下运行 docker desktop 报错 cannot enable hyper-v service
- 【亲测可用】云之道知识付费v2独立版3.0.1全开源+前后端源码
- 计算机没有autoCAD_BKM ? 37期 — 教你Python玩转AutoCAD
- 厉害了!世界首例AI诈骗案出现:公司高管接老板电话被骗22万欧元
- Linux下同时打开编辑多个文件 【VSP、vim -o】
- 合格的百度竞价需要做到哪些?