分享一个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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python3.2模拟实现webqq登录
Feb 15 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
python如何统计代码运行的时长
Jul 24 Python
python同步windows和linux文件
Aug 29 Python
python实现大学人员管理系统
Oct 25 Python
Django框架创建项目的方法入门教程
Nov 04 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
python基础之停用词过滤详解
Apr 21 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
快速了解Python相对导入
2018/01/12 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
城管大队整治方案
2014/05/06 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
神秘岛读书笔记
2015/07/01 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL