编写Python脚本把sqlAlchemy对象转换成dict的教程

下面是编写Python脚本把sqlAlchemy对象转换成dict的详细教程。

1. 安装必要的依赖

在进行脚本编写之前,我们需要先安装必要的依赖:

  • sqlAlchemy: 用于操作数据库
  • Marshmallow: 用于序列化和反序列化

你可以通过pip安装这两个依赖:

pip install sqlalchemy marshmallow

2. 定义sqlAlchemy对象和序列化schema

在进行对象转换之前,我们需要先定义一个sqlAlchemy对象和对应的序列化schema。

下面是一个例子,假设我们有一个User对象,它对应着一个users表:

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

我们还需要定义一个对应的序列化schema,用于将对象序列化成dict:

from marshmallow import Schema, fields

class UserSchema(Schema):
    id = fields.Integer(dump_only=True)
    name = fields.String()
    email = fields.Email()

这个schema中,id字段的dump_only属性设为True,表示这个字段只能在序列化中出现,不能在反序列化中出现。这是因为在数据库中,id字段通常是由数据库自动生成的,我们不需要在反序列化中传递它。

3. 转换对象为dict

有了上面的准备工作后,我们就可以开始将对象转换为dict了。下面是一个例子:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建数据库引擎和session
engine = create_engine('mysql+pymysql://username:password@host:port/dbname', echo=True)
Session = sessionmaker(bind=engine)
session = Session()

# 查询User对象
user = session.query(User).filter_by(name='Tom').first()

# 将对象转换为dict
user_data = UserSchema().dump(user)

print(user_data)

这个例子中,我们首先创建了一个数据库引擎和session。然后,我们查询了一个nameTomUser对象,并将其转换为dict,最后输出了这个dict。

4. 示例说明

假设我们有如下的表结构:

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `email` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我们插入一条数据:

INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Tom', 'tom@example.com');

接下来,我们可以通过以下代码将这个对象转换成dict:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from marshmallow import Schema, fields

# 定义sqlAlchemy对象
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

# 定义序列化schema
class UserSchema(Schema):
    id = fields.Integer(dump_only=True)
    name = fields.String()
    email = fields.Email()

# 创建数据库引擎和session
engine = create_engine('mysql+pymysql://username:password@host:port/dbname', echo=True)
Session = sessionmaker(bind=engine)
session = Session()

# 查询User对象
user = session.query(User).filter_by(name='Tom').first()

# 将对象转换为dict
user_data = UserSchema().dump(user)

print(user_data)

如果一切正常,应该能看到输出的dict如下:

{
    'name': 'Tom',
    'email': 'tom@example.com',
    'id': 1
}

另外,我们还可以通过如下代码将多个对象转换成dict的列表:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from marshmallow import Schema, fields

# 定义sqlAlchemy对象
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

# 定义序列化schema
class UserSchema(Schema):
    id = fields.Integer(dump_only=True)
    name = fields.String()
    email = fields.Email()

# 创建数据库引擎和session
engine = create_engine('mysql+pymysql://username:password@host:port/dbname', echo=True)
Session = sessionmaker(bind=engine)
session = Session()

# 查询多个User对象
users = session.query(User).all()

# 将对象转换为dict的列表
users_data = UserSchema(many=True).dump(users)

print(users_data)

这个例子中,我们查询了所有的User对象,然后将它们转换成了dict的列表,并输出了这个列表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:编写Python脚本把sqlAlchemy对象转换成dict的教程 - Python技术站

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

相关文章

  • TensorFlow dataset.shuffle、batch、repeat的使用详解

    https://www.jb51.net/article/178976.htm 直接看代码例子,有详细注释!! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import tensorflow as tf import numpy as np …

    2023年4月8日
    00
  • tensorflow 限制显存大小的实现

    在 TensorFlow 中,可以使用 tf.config 模块来限制显存大小。可以使用以下代码来实现: import tensorflow as tf # 限制显存大小 gpus = tf.config.experimental.list_physical_devices(‘GPU’) if gpus: try: # 设置显存大小为 2GB tf.conf…

    tensorflow 2023年5月16日
    00
  • 查看已安装tensorflow版本的方法示例

    TensorFlow 是一个非常流行的深度学习框架,它可以用来构建和训练神经网络。在使用 TensorFlow 时,我们需要知道当前安装的 TensorFlow 版本。本文将详细讲解查看已安装 TensorFlow 版本的方法示例。 查看已安装 TensorFlow 版本的方法示例 在 Python 中,我们可以使用 tensorflow 模块来访问 Ten…

    tensorflow 2023年5月16日
    00
  • tensorflow学习笔记四:mnist实例–用简单的神经网络来训练和测试

    刚开始学习tf时,我们从简单的地方开始。卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始。 神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输出层。 数据从输入层输入,在隐藏层进行加权变换,最后在输出层进行输出。输出的时候,我们可以使用softmax回归,输出属于每个类别的概率值。借用极客学院的图表示…

    2023年4月8日
    00
  • tensorflow的variable、variable_scope和get_variable的用法和区别

    在tensorflow中,可以使用tf.Variable来创建一个变量,也可以使用tf.get_variable来创建一个变量,但是在一个模型需要使用其他模型的变量时,tf.get_variable就派上大用场了。 先分别介绍两个函数的用法: import tensorflow as tf var1 = tf.Variable(1.0,name=’first…

    2023年4月8日
    00
  • tensorflow之word2vec_basic代码研究

    源代码网址: https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py简书上有一篇此代码的详解,图文并茂,可直接看这篇详解: http://www.jianshu.com/p/f682066f0586#…

    tensorflow 2023年4月8日
    00
  • Ubuntu安装配置Tensorflow-GPU

    Ubuntu 16.04 + GTX 1080 Ti + CUDA 9.0 + Cudnn 7.1 安装配置 Download Ubuntu16.04:   mirrors.aliyun.com/ubuntu-releases/16.04    |    or 18.04 CUDA与CUDNN版本对应关系,可参考该链接: https://blog.csdn.…

    2023年4月5日
    00
  • tensorflow 和cuda对应关系

    Version Python version Compiler Build tools tensorflow-1.11.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.15.0 tensorflow-1.10.0 2.7, 3.3-3.6 GCC 4.8 Bazel 0.15.0 tensorflow-1.9.0 2.7, 3.3-3.6 GC…

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