分享一个Python 遇到数据库超好用的模块


Posted in Python onApril 06, 2022

前言:

大家好,今天我和大家来聊一下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()
    # 关闭session
    session.close()
    
if __name__ == "__main__":
    insert_data(name_1="Mike", age_1=20)
    insert_data(name_1="John", age_1=35)
    .......

运行后的结果如下图所示:

 分享一个Python 遇到数据库超好用的模块

四、查询

要是我们想要查询表格中的数据,可以这么来做

# 创建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())

到此这篇关于 分享一个Python 遇到数据库超好用的模块的文章就介绍到这了,更多相关 Python模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
利用Python演示数型数据结构的教程
Apr 03 Python
Python实现线程池代码分享
Jun 21 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
Python的语言类型(详解)
Jun 24 Python
pyqt5简介及安装方法介绍
Jan 31 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
在python中实现对list求和及求积
Nov 14 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
django 模型中的计算字段实例
May 19 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
PHP 采集程序中常用的函数
2009/12/09 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
使用express获取微信小程序二维码小记
2019/05/21 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python复制文件的方法实例详解
2015/05/22 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
Atom的python插件和常用插件说明
2018/07/08 Python
python 正确保留多位小数的实例
2018/07/16 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
社会实践先进工作者事迹材料
2014/05/06 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
如何正确理解python装饰器
2021/06/15 Python
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python