大家好,今天我和大家来聊一下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()

DataFrameMySQL数据库

我们同时也可以批量的将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 遇到数据库,这个模块就变得超级好用相关推荐

  1. python通过什么连接数据库_python中常用的各种数据库操作模块和连接实例

    这篇文章主要介绍了python中常用的各种数据库操作模块和连接实例,包括sqlite3.oracle.mysql.excel,需要的朋友可以参考下 工作中,经常会有用python访问各种数据库的需求, ...

  2. cx_oracle主备服务器,怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作

    怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作 发布时间:2021-03-17 16:32:34 来源:亿速云 阅读:67 作者:Leah 本篇文章为大家展示了怎么在Pyt ...

  3. python cx oracle 11g,怎么在python中使用cx_Oracle模块连接Oracle数据库

    怎么在python中使用cx_Oracle模块连接Oracle数据库 发布时间:2021-03-29 18:08:05 来源:亿速云 阅读:65 作者:Leah 怎么在python中使用cx_Orac ...

  4. 浅谈Python自带数据库SQLite3模块的使用(全面详细)

    目录 写在前面 一:使用数据库的宏观过程 二:数据库使用 1.导入数据库模块 2.打开数据库 2.1.在硬盘上建立数据库 2.2.在内存上建立数据库 3.创建游标 4.执行SQL语句 4.1.创建表 ...

  5. python学习,pip 模块-数据库(mysql)-excel操作-写日志-邮件-md5加密

    #模块 # 标准模块 # python自带的 # 第三方模块 # pymysql # 自己写的python文件 # 导入模块的实质 # import my_model # 把导入的模块运行了一遍 # ...

  6. python随机数据库_关于Python的随机数模块,你必须要掌握!-后台/架构/数据库-敏捷大拇指-一个敢保留真话的IT精英社区...

    所谓七夕 昨天的文章这个七夕节,用Python为女友绘制一张爱心照片墙吧!收获了最近以来最高的浏览量,没枉费我熬到夜里3点赶出来的热点文章.有付出就总会有所回报,只是看这天来的早晚而已.七夕一个人看这 ...

  7. 看Python应乎潮流的72变

    软件业的特点,就是层出不穷的新东东涌现.Windows早就革了DOS的命,浏览器差不多革了桌面软件的命,云计算准备再革所有软件的命,最后还追上个乔布斯说一切听他的. 动荡的软件界,让人眼花缭乱.这一切 ...

  8. 五、使用Python操作数据库

    (六)使用Python操作数据 程序运行时,数据是在内存中.当程序终止时,通常需将数据保存在磁盘上.为了便于程序保存和读取数据,并能直接通过条件快速查询到指定数据,数据库(Database)这种专门用 ...

  9. Python MySQL数据库交互

    引言 本文介绍在 Python 中如何与 MySQL 数据库交互 利用 PyMySQL 数据库驱动,实现 MySQL 数据库的增删改查及事务处理 MySQL 简介 MySQL是一个关系型数据库管理系统 ...

最新文章

  1. 在线音乐电台Pandora股价暴涨20% CEO肯尼迪辞任
  2. 学数解题160919
  3. verilog基础--sign表达式
  4. linux_redhat_线程后台运行方法
  5. linux部署DM数据库的DEM系统
  6. 基于ASA防火墙的SSL ×××配置
  7. 制作一个大风车加载条
  8. nodejs libararies
  9. 编程实现类Logo语言(海龟语言)
  10. 那些惊艳了岁月的诗词
  11. Pose Estimation 入门理解
  12. 【渝粤教育】电大中专电子商务网站建设与维护 (6)作业 题库
  13. 国际证券市场发展简史(二)美国证券市场
  14. android.telex 涉及技术整理
  15. windows 10 下运行 docker desktop 报错 cannot enable hyper-v service
  16. 【亲测可用】云之道知识付费v2独立版3.0.1全开源+前后端源码
  17. 计算机没有autoCAD_BKM ? 37期 — 教你Python玩转AutoCAD
  18. 厉害了!世界首例AI诈骗案出现:公司高管接老板电话被骗22万欧元
  19. Linux下同时打开编辑多个文件 【VSP、vim -o】
  20. 合格的百度竞价需要做到哪些?

热门文章

  1. 龙卷风java_程序设计-理解java继承-遁地龙卷风
  2. 云服务器测速脚本_服务器测速命令
  3. 如何搭建一个站内搜索引擎(一) 第1章 写在最前
  4. 辉芒微IO单片机FT60F210-URT
  5. 蓝牙4.2 安全连接
  6. python爬虫爬取京东商品评价_python爬取京东商品信息及评论
  7. PC微信逆向--定位sqlite3_exec和数据库句柄
  8. 不定积分——1/(1+x^4)的不定积分
  9. 天津情侣朋友游玩项目
  10. 海大叔侃币:作为一个炒币者,分享三点经验