分享一个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里将list中元素依次向前移动一位
Sep 12 Python
Python发送email的3种方法
Apr 28 Python
python分析网页上所有超链接的方法
May 08 Python
python黑魔法之参数传递
Feb 12 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
python 列表降维的实例讲解
Jun 28 Python
Django uwsgi Nginx 的生产环境部署详解
Feb 02 Python
python实现二维数组的对角线遍历
Mar 02 Python
python浪漫表白源码
Apr 05 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
python开发飞机大战游戏
Jul 15 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
react中使用swiper的具体方法
2018/05/15 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
python简单猜数游戏实例
2015/07/09 Python
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
python如何将图片转换为字符图片
2020/08/19 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Python短信轰炸的代码
2020/03/25 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
银行柜员应聘推荐信范文
2013/11/24 职场文书
大学生求职信例文
2014/06/29 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
三下乡个人总结
2015/03/04 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
春季运动会加油词
2015/07/18 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
logback如何自定义日志存储
2021/08/30 Java/Android