分享一个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基础教程之循环介绍
Aug 29 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python找出最小的K个数实例代码
Jan 04 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python构建图像分类识别器的方法
Jan 12 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
Jul 12 Python
快速查找Python安装路径方法
Feb 06 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
解决paramiko执行命令超时的问题
Apr 16 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 Python
pandas 操作 Excel操作总结
Mar 31 Python
Python利用capstone实现反汇编
关于Python中进度条的六个实用技巧分享
如何在Python中妥善使用进度条详解
Apr 05 #Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
You might like
建立动态的WML站点(二)
2006/10/09 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
window.onload使用指南
2015/09/13 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python检测服务器端口代码实例
2019/08/31 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
python绘制彩虹图
2019/12/16 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python 读取二进制 显示图片案例
2020/04/24 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
美国汽车交易网站:Edmunds
2016/08/17 全球购物
实习护士自我鉴定
2013/10/13 职场文书
建筑工地大门标语
2014/06/18 职场文书
建筑管理专业求职信
2014/07/28 职场文书
停电调休通知
2015/04/16 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
运动会3000米加油稿
2015/07/21 职场文书
爱国主义主题班会
2015/08/14 职场文书
一起来学习Python的元组和列表
2022/03/13 Python