Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)

Python SQLAlchemy基本操作和常用技巧

什么是SQLAlchemy

SQLAlchemy是Python中最流行的ORM框架之一。ORM即“对象关系映射”,它提供了一种将数据库和Python对象联系起来的方式,这种方式使得在Python中操作数据库变得更加容易,同时也能够提供更好的抽象化和安全性。

安装SQLAlchemy

要使用SQLAlchemy,首先需要安装它。可以使用pip进行安装:

pip install sqlalchemy

建立连接

使用SQLAlchemy来连接到数据库,需要提供它所使用的数据库类型、用户名、密码、主机和端口。这些信息被组合成一个URL,称为“数据库URI”。

对于SQLite数据库,可以使用以下代码:

from sqlalchemy import create_engine

engine = create_engine('sqlite:///example.db')

这里使用了一个简单的例子,数据库文件名为example.db。如果需要连接到其他类型的数据库(如MySQL、PostgreSQL等),则需要提供相应的URI。

创建表格

在SQLAlchemy中,每个表格都是一个Python类。这意味着我们可以通过创建一个类来定义一个表格。在类中,每个属性都对应表格中的一个列。

以下示例展示了如何创建一个Notes表格:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Note(Base):
    __tablename__ = 'notes'

    id = Column(Integer, primary_key=True)
    title = Column(String)
    text = Column(String)

这里的Note类继承自declarative_base()返回的基类。id、title和text分别声明表格中的三个列。__tablename__变量指定了表格的名称。

添加数据

要向表格中添加数据,需要创建一个Session对象。Session是SQLAlchemy中处理数据库事务的主要接口。

以下代码展示了如何创建Session对象,并添加一条笔记到Notes表格中:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

note = Note(title='Example Note', text='This is an example note.')
session.add(note)
session.commit()

这里创建了一个Session对象,并将其绑定到上一节中创建的engine。然后,创建了一个Note对象,并使用add()方法将其添加到session中。最后,使用commit()方法提交事务,将笔记添加到数据库中。

查询数据

要从表格中查询数据,可以使用Session对象的query()方法。这个方法接收一个表格作为参数,并返回一个包含所有行的查询对象。

以下代码查询了Notes表格中的所有笔记,并打印了它们的标题和内容:

notes = session.query(Note).all()
for note in notes:
    print(note.title)
    print(note.text)

query()方法返回Note表格中的所有笔记。用all()方法将结果转换为列表。之后可以遍历该列表,并分别打印每个笔记的标题和内容。

修改数据

要修改一条笔记,可以简单地将其对象重新赋值并提交事务:

note.title = 'New Title'
session.commit()

这里将标题重新赋值为“New Title”,然后调用commit()方法将更改提交到数据库中。任何已经发生的更改都将被提交,包括此次的更改。

删除数据

要删除一条笔记,可以使用Session对象的delete()方法:

session.delete(note)
session.commit()

这里使用delete()方法删除了之前创建的笔记对象,并使用commit()方法将更改提交到数据库中。

结论

这篇文章提供了SQLAlchemy的一些基本操作和常用技巧。SQLAlchemy是一个非常强大的ORM框架,可以帮助Python开发人员更轻松地管理数据库。通过使用Python类来定义表格和操作数据,让数据库的操作更容易理解和维护。

示例

以下是SQLAlchemy在Flask-web应用中的应用示例:

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

class Note(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80), nullable=False)
    text = db.Column(db.String(120), nullable=False)

@app.route('/notes', methods=['GET', 'POST'])
def notes():
    if request.method == 'POST':
        note_data = request.get_json()
        note = Note(
            title=note_data['title'],
            text=note_data['text']
        )
        db.session.add(note)
        db.session.commit()
        return jsonify({'id': note.id})
    else:
        notes = Note.query.all()
        return jsonify([{
            'id': note.id,
            'title': note.title,
            'text': note.text
        } for note in notes])

if __name__ == '__main__':
    app.run()

这里创建了一个基本的Flask-web应用,并定义了一个Note类来操作数据库。该应用启动时会创建名为example.db的SQLite数据库,然后启动一个监听端口。当向/notes发送HTTP GET请求时,返回数据库中所有笔记的JSON数组。当向/notes发送HTTP POST请求时,将向数据库添加一条新笔记,并返回新笔记的ID。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好) - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python 列表推导式与字典推导式的实现

    Python中的列表推导式和字典推导式是快速创建列表和字典的一种方式,使得代码更加简洁、可读性更高。本文将详细讲解这两种推导式的实现方法。 列表推导式 列表推导式的基本格式为: [expression for item in iterable] 其中,expression是要添加到列表中的元素;item是迭代器中的每个元素;iterable是可迭代的对象,例…

    python 2023年5月13日
    00
  • python Tkinter的简单入门教程

    Python Tkinter的简单入门教程 Python Tkinter是一个标准库,它是Python的图形用户界面(GUI)工具包。本文将对Tkinter进行简单的入门教程,并提供两个实例说明如何使用它。 安装Tkinter 在Python 3.x版本中,Tkinter已经是一个标准库,不需要安装。如果您使用的是Python 2.x版本,您需要安装Tkin…

    python 2023年5月19日
    00
  • python安装cx_Oracle和wxPython的方法

    安装cx_Oracle 访问Oracle官网,下载适合自己系统的Oracle Instant Client和SDK,建议下载与Oracle数据库版本一致的版本,下载完成后解压到指定目录。 安装cx_Oracle,可以使用pip安装,打开命令行窗口,输入以下命令,等待安装完成: pip install cx_Oracle 卸载pypyodbc,因为冲突会导致无…

    python 2023年5月13日
    00
  • python+opencv实现论文插图局部放大并拼接效果

    下面详细讲解“python+opencv实现论文插图局部放大并拼接效果”的完整攻略。 1. 准备工作 首先,需要安装Python和OpenCV库。可以通过pip或conda来安装OpenCV库: pip install opencv-python 或者 conda install opencv 2. 图像放大与拼接 对于图像局部放大与拼接的实现,可分为以下几…

    python 2023年5月18日
    00
  • 关于Python 常用获取元素 Driver 总结

    关于Python常用获取元素Driver总结 如果我们要使用Python进行自动化测试或者爬虫相关开发,那么我们必须要掌握如何获取页面元素。本文将总结常用的Python获取元素的方法。 前置条件 在使用以下代码之前,我们需要安装selenium库,并下载对应的浏览器的驱动。 1. 通过ID获取元素 我们可以通过元素的ID进行获取,以下是获取百度首页搜索框元素…

    python 2023年5月20日
    00
  • PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形

    PyQtGraph是基于PyQt5的图像控件库,能够高效快速地绘制实时图形,因此在数据可视化方面应用非常广泛。本文将介绍如何使用PyQtGraph绘制并更新实时数据的图形。 1. PyQtGraph的安装 在终端执行以下命令: pip install PyQt5 PyQtGraph 2. 创建GUI界面及绘图区域 我们需要创建一个GUI界面,并添加一个PyQ…

    python 2023年6月3日
    00
  • python解决网站的反爬虫策略总结

    下面是Python解决网站反爬虫策略的完整攻略。 总体思路 网站反爬虫策略大多数是通过识别爬虫的特征来进行的,因此我们的应对策略就是尽可能模拟正常用户的行为,隐藏我们的爬虫特征,使得网站无法识别出我们是爬虫。具体思路如下: 伪装请求头,将爬虫请求头中的特征(如User-Agent)替换成浏览器的请求头,或者使用随机请求头。 限制爬取频率,尽量模拟人类的行为,…

    python 2023年6月3日
    00
  • 如何用python GUI(tkinter)写一个闹铃小程序(思路详解)

    下面是使用Python GUI库Tkinter来编写一个闹铃小程序的思路和具体流程。 1. 准备工作 首先要安装Python的Tkinter库,打开命令行,输入以下命令: pip install tkinter 安装成功后,就可以使用Tkinter库了。 2. 布局界面 我们可以使用Tkinter库提供的布局管理器来进行界面的设计。在闹钟小程序的界面中,可以…

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部