分享一个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 从远程服务器下载东西的代码
Feb 10 Python
python抓取京东商城手机列表url实例代码
Dec 18 Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
Python 数据结构之旋转链表
Feb 25 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
学生信息管理系统python版
Oct 17 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
对django layer弹窗组件的使用详解
Aug 31 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
七个Python必备的GUI库
Apr 27 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
php设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python对数组进行反转的方法
2015/05/20 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
数控专业个人求职信范文
2014/02/05 职场文书
微信营销策划方案
2014/02/24 职场文书
不错的求职信范文
2014/07/20 职场文书
开发房地产协议书
2014/09/14 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
大足石刻导游词
2015/02/02 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang