【大模型应用开发-FastAPI框架】(八)Sqlalchemy+postgresql简单增删改查

目录

 

一、SQLAlchemy简介

二、安装postgresql 

三、安装依赖

四、增删改查操作

1、初始化连接

2、创建表

3、插入一行数据

4、插入多行数据

5、查询操作

6、更新数据

7、删除数据

8、删除表

五、完整代码


 

一、SQLAlchemy简介

 

SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包对象关系映射(ORM)工具,使用MIT许可证发行。

SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行。因此,SQLAlchemy采用了类似于JavaHibernate的数据映射模型,而不是其他ORM框架采用的Active Record模型。不过,Elixir和declarative等可选插件可以让用户使用声明语法。

SQLAlchemy首次发行于2006年2月,并迅速地在Python社区中成为广泛使用的ORM工具之一,不亚于Django的ORM框架。

 

二、安装postgresql 

 

postgresql参考:

【大模型应用开发-Postgresql数据库】(二)Linux使用Docker安装Postgresql-CSDN博客

 

 

三、安装依赖

 

# pip install sqlalchemy psycopg2

 

四、增删改查操作

 

1、初始化连接

import time
import uuid
import datetime
import sqlalchemy
import sqlalchemy.orm as orm
from sqlalchemy.orm import declarative_base
from sqlalchemy import text

# pip install sqlalchemy psycopg2

Base = declarative_base()

# 创建数据库连接
url = 'postgresql://admin:admin@172.30.1.*:5432/mytest'
engine = sqlalchemy.create_engine(url)

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


# 定义数据模型
class TestData(Base):
    __tablename__ = "tb_test_1"

    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)
    name = sqlalchemy.Column(sqlalchemy.String(256), nullable=True)
    uuid = sqlalchemy.Column(sqlalchemy.String(64), unique=True)
    add_time = sqlalchemy.Column(sqlalchemy.DateTime())
    data = sqlalchemy.Column(sqlalchemy.Text(), default='{}')

    def __init__(self, name, uuid, data='{}', add_time=None):
        self.name = name
        self.uuid = uuid
        self.data = data
        self.add_time = add_time if None != add_time else datetime.datetime.now()

 

2、创建表

 

def create_table():
    with engine.connect() as connection:
        # 创建表格(如果不存在)
        Base.metadata.create_all(engine)

 

 

3、插入一行数据

 


# 插入一行数据
def add_one():
    # 创建会话
    uuid_str = str(uuid.uuid4())
    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    new_user = TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time)

    # 添加到session:
    session.add(new_user)

    # 提交即保存到数据库:
    session.commit()

    # 关闭session:
    session.close()

 

4、插入多行数据

 

def add_multi():
    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    data_list = []
    for i in range(10):
        uuid_str = str(uuid.uuid4())
        data_list.append(TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time))

    # 添加到session:
    session.add_all(data_list)

    # 提交即保存到数据库:
    session.commit()

    # 关闭session:
    session.close()

 

5、查询操作

 


# 查询操作
def select_data():
    # 创建Session
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(TestData).filter(TestData.id == '1' and TestData.name == 'zhangsan').one()
    print('name:', user.name)
    print('data:', user.data)
    session.close()  # 关闭Session

 

6、更新数据

 


# 更新操作
def update_data():
    users = session.query(TestData).filter_by(name="zhangsan").first()  # 查询条件
    users.data = '{"name": "lisi"}'  # 更新操作
    session.add(users)  # 添加到会话
    session.commit()  # 提交即保存到数据库
    session.close()  # 关闭会话

 

7、删除数据

 


# 删除操作
def delete_one():
    delete_data = session.query(TestData).filter(TestData.id == "1").first()
    if delete_data:
        session.delete(delete_data)
        session.commit()
    session.close()  # 关闭会话

 

8、删除表

 

# 删除表
def drop_table():
    session.execute(text('drop table tb_test_1'))
    session.commit()
    session.close()

 

五、完整代码

 

import time
import uuid
import datetime
import sqlalchemy
import sqlalchemy.orm as orm
from sqlalchemy.orm import declarative_base
from sqlalchemy import text

# pip install sqlalchemy psycopg2

Base = declarative_base()

# 创建数据库连接
url = 'postgresql://admin:admin@172.30.1.23:55433/mytest'
engine = sqlalchemy.create_engine(url)

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


# 定义数据模型
class TestData(Base):
    __tablename__ = "tb_test_1"

    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)
    name = sqlalchemy.Column(sqlalchemy.String(256), nullable=True)
    uuid = sqlalchemy.Column(sqlalchemy.String(64), unique=True)
    add_time = sqlalchemy.Column(sqlalchemy.DateTime())
    data = sqlalchemy.Column(sqlalchemy.Text(), default='{}')

    def __init__(self, name, uuid, data='{}', add_time=None):
        self.name = name
        self.uuid = uuid
        self.data = data
        self.add_time = add_time if None != add_time else datetime.datetime.now()


def create_table():
    with engine.connect() as connection:
        # 创建表格(如果不存在)
        Base.metadata.create_all(engine)


# 插入一行数据
def add_one():
    # 创建会话
    uuid_str = str(uuid.uuid4())
    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    new_user = TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time)

    # 添加到session:
    session.add(new_user)

    # 提交即保存到数据库:
    session.commit()

    # 关闭session:
    session.close()


# 插入多行数据
def add_multi():
    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    data_list = []
    for i in range(10):
        uuid_str = str(uuid.uuid4())
        data_list.append(TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time))

    # 添加到session:
    session.add_all(data_list)

    # 提交即保存到数据库:
    session.commit()

    # 关闭session:
    session.close()


# 查询操作
def select_data():
    # 创建Session
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(TestData).filter(TestData.id == '1' and TestData.name == 'zhangsan').one()
    print('name:', user.name)
    print('data:', user.data)
    session.close()  # 关闭Session


# 更新操作
def update_data():
    users = session.query(TestData).filter_by(name="zhangsan").first()  # 查询条件
    users.data = '{"name": "lisi"}'  # 更新操作
    session.add(users)  # 添加到会话
    session.commit()  # 提交即保存到数据库
    session.close()  # 关闭会话


# 删除操作
def delete_one():
    delete_data = session.query(TestData).filter(TestData.id == "1").first()
    if delete_data:
        session.delete(delete_data)
        session.commit()
    session.close()  # 关闭会话


# 删除表
def drop_table():
    session.execute(text('drop table tb_test_1'))
    session.commit()
    session.close()


def run():
    create_table()
    # add_one()
    add_multi()
    # select_data()
    # update_data()
    # delete_one()
    # drop_table()


if __name__ == '__main__':
    run()

 

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用flask-sqlalchemy进行增删改查操作非常方便。下面是一些示例代码来说明如何使用flask-sqlalchemy进行增删改查操作: 1. 增加数据: 使用模型类的构造函数创建一个新的对象,并将其添加到数据库会话中,然后使用会话的`add()`方法将其添加到数据库中。 示例代码如下: ``` from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) user = User(username='John', email='john@example.com') db.session.add(user) db.session.commit() ``` 2. 删除数据: 使用模型类的`query`属性和`filter_by()`方法来筛选要删除的数据,并使用会话的`delete()`方法将其从数据库中删除。 示例代码如下: ``` user = User.query.filter_by(username='John').first() db.session.delete(user) db.session.commit() ``` 3. 修改数据: 使用模型类的`query`属性和`filter_by()`方法来筛选要修改的数据,并通过修改对象的属性来更新数据。 示例代码如下: ``` user = User.query.filter_by(username='John').first() user.email = 'new_email@example.com' db.session.commit() ``` 4. 查询数据: 使用模型类的`query`属性和各种查询方法来检索数据,例如`all()`方法获取所有数据,`filter_by()`方法根据条件筛选数据等。 示例代码如下: ``` users = User.query.all() # 获取所有用户数据 user = User.query.filter_by(username='John').first() # 根据用户名获取用户数据 ``` 这些是使用flask-sqlalchemy进行增删改查操作的基本示例。你可以根据需要进行调整和扩展来实现特定的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forest_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值