分享一个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 中文乱码问题深入分析
Mar 13 Python
python使用Berkeley DB数据库实例
Sep 26 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python计算列表内各元素的个数实例
Jun 29 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Python中如何引入第三方模块
May 27 Python
python实现图像外边界跟踪操作
Jul 13 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
PHP 翻页 实例代码
2009/08/07 PHP
php二维数组排序详解
2013/11/06 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
Python3 处理JSON的实例详解
2017/10/29 Python
python学生信息管理系统
2018/03/13 Python
python时间日期操作方法实例小结
2020/02/06 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
python热力图实现简单方法
2021/01/29 Python
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
室内设计自我鉴定
2013/10/15 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
生产部管理制度
2014/01/31 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
班级读书活动总结
2014/06/30 职场文书
经营目标管理责任书
2014/07/25 职场文书
新农村建设汇报材料
2014/08/15 职场文书
小学生学习保证书
2015/02/26 职场文书
体育委员竞选稿
2015/11/21 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL