分享一个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 08 Python
Python正则简单实例分析
Mar 21 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
keras 多gpu并行运行案例
Jun 10 Python
python对一个数向上取整的实例方法
Jun 18 Python
关于Python错误重试方法总结
Jan 03 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
python全面解析接口返回数据
Feb 12 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
JsChart组件使用详解
2018/03/04 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python实现身份证号码解析
2015/09/01 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Python map及filter函数使用方法解析
2020/08/06 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
优秀应届本科生求职信
2014/07/19 职场文书
会员卡清退活动总结
2014/08/27 职场文书
周年庆典答谢词
2015/01/20 职场文书