分享一个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中return语句用法实例分析
Aug 04 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
pandas 快速处理 date_time 日期格式方法
Nov 12 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 Python
Django框架models使用group by详解
Mar 11 Python
什么是python的必选参数
Jun 21 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php指定函数参数默认值示例代码
2013/12/04 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
详解Django rest_framework实现RESTful API
2018/05/24 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
质量承诺书格式
2014/05/20 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
个人年度总结报告
2015/03/09 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技