Python SQLAlchemy demo


"""
Create 操作
"""

from faker import Factory
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

faker = Factory.create()

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')
Session = sessionmaker(bind=engine)
session = Session()

Base = declarative_base()


class User(Base):
    __tablename__ = "User"
    id = Column(Integer, primary_key=True,autoincrement=True)
    cname = Column(String(64))
    caddress = Column(String(512))

    def __init__(self,name,address):
        self.cname = name
        self.caddress = address

    def __str__(self):
        return "cname:"+self.cname +" caddress:"+self.caddress

    def __repr__(self):
        return "cname:"+self.cname +" caddress:"+self.caddress


class Dog(Base):
    __tablename__ = "Dog"

    id = Column(Integer,primary_key=True,autoincrement=True)
    dname = Column(String(64))
    ddesc = Column(String(1024))

    def __init__(self,name,desc):
        self.dname = name
        self.ddesc = desc

    def __str__(self):
        return "dname:"+self.dname + " ddesc:"+self.ddesc


# 生成多条Users数据
Users = [User(name= faker.name(),address = faker.address()) for i in range(10)]

# 生成一条Dog数据
dog = Dog(name=faker.name(),desc=faker.email())

# 把描述的表创建出来
Base.metadata.create_all(engine)

# 把多个表数据添加到会话
session.add_all(Users)

# 把一个表数据添加到会话
session.add(dog)

# 提交会话
session.commit()




"""
Retrieve查询操作
"""

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')

# 实例它一个sessionmaker类
Session = sessionmaker(bind=engine)

# 数据库会话
session = Session()

# 基类
Base = declarative_base()

# ORM描述User表
class User(Base):
    __tablename__ = "User"
    id = Column(Integer, primary_key=True,autoincrement=True)
    cname = Column(String(64))
    caddress = Column(String(512))

    def __init__(self,name,address):
        self.cname = name
        self.caddress = address

    def __str__(self):
        return "cname:"+self.cname +"\ncaddress:"+self.caddress

    def __repr__(self):
        return "cname:"+self.cname +"\ncaddress:"+self.caddress


# 查询会返回所有的结果
users = session.query(User).all()

# 遍历输出看所有结果
for user in users:
    print(user.__str__() +"\n--------------------------\n")

# 条件查询(我数据库里只有一个ElizabethBass),这里也是为了方便展示.first()获取第一个对象的作用
elizabeth = session.query(User).filter_by(cname='Elizabeth Bass').first()
print(elizabeth)
print("\n------------------------\n")
# 条件查询的另一种形式
elizabeth = session.query(User).filter(User.cname == 'Elizabeth Bass').first()
print(elizabeth)



"""
Update更新操作
"""

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')

# 实例它一个sessionmaker类
Session = sessionmaker(bind=engine)

# 数据库会话
session = Session()

# 基类
Base = declarative_base()


# ORM描述Dog表
class Dog(Base):
    __tablename__ = "Dog"

    id = Column(Integer,primary_key=True,autoincrement=True)
    dname = Column(String(64))
    ddesc = Column(String(1024))

    def __init__(self,name,desc):
        self.dname = name
        self.ddesc = desc

    def __str__(self):
        return "dname:"+self.dname + " ddesc:"+self.ddesc

# 还记得吗,我们的数据库里只有一条Dog的数据
# 现在就把它拿出来,改一下名字,再放回去
dog = session.query(Dog).first()
print(dog)
print("\n---------------------\n")
# 给小狗改名
dog.dname = "little white"

# 提交更改
session.commit()

# 改完再看看
dog = session.query(Dog).first()
print(dog)



"""
删除Delete操作
"""

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')

# 实例它一个sessionmaker类
Session = sessionmaker(bind=engine)

# 数据库会话
session = Session()

# 基类
Base = declarative_base()


# ORM描述Dog表
class Dog(Base):
    __tablename__ = "Dog"

    id = Column(Integer,primary_key=True,autoincrement=True)
    dname = Column(String(64))
    ddesc = Column(String(1024))

    def __init__(self,name,desc):
        self.dname = name
        self.ddesc = desc

    def __str__(self):
        return "dname:"+self.dname + " ddesc:"+self.ddesc

# 把唯一的一条狗数据删掉
dog = session.query(Dog).first()
session.delete(dog)
session.commit()

# 删了之后一条数据都没了 = =
dogs = session.query(Dog).all()
for dog in dogs:
    print(dog)
    print("\n------------------\n")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python嵌入式软件接口测试Demo可以是用Python编写的一个演示程序,用于展示如何使用Python在嵌入式软件系统中进行接口测试。 该Demo程序可以具备以下功能: 1. 接口测试案例编写:演示如何使用Python编写接口测试案例,包括发送请求和解析响应等过程。可以使用Python的库或框架如`requests`、`unittest`等来简化接口测试的编写过程。 2. 自动化测试执行:演示如何使用Python编写测试脚本,自动化执行接口测试案例。可以使用Python的`unittest`或其他测试框架来批量执行测试用例,生成测试报告,验证接口的正确性。 3. 测试环境准备:演示如何使用Python来准备测试环境,例如模拟设备或信号等。可以使用Python的库如`pyserial`来模拟串口设备,`faker`来生成模拟数据等。 4. 数据库测试:演示如何使用Python来进行数据库接口测试。可以使用Python的ORM框架如`SQLAlchemy`来简化数据库的连接和操作,并编写相应的测试用例来验证数据库接口的正确性。 5. 异常处理和日志记录:演示如何使用Python来处理接口测试中可能出现的异常情况,并记录日志。可以使用Python的`logging`模块来管理和记录测试过程中的日志信息。 通过这个Demo程序,开发人员和测试人员可以更好地理解和学习如何使用Python来进行嵌入式软件的接口测试,提高测试效率和质量。同时,可以根据实际需求扩展Demo程序,添加更多的功能和测试场景。 ### 回答2: Python嵌入式软件接口测试Demo是一个用于测试嵌入式软件接口的演示程序。它使用Python编程语言来编写测试用例和执行测试,以检测嵌入式软件接口的功能和性能。 该Demo的主要特点包括: 1. 测试用例编写:使用Python的简洁语法和强大的库,可以轻松编写测试用例,包括发送测试数据和断言结果的逻辑。 2. 接口模拟:当嵌入式软件接口依赖于其他硬件设备或外部系统时,可以使用Python的模拟功能来模拟这些外部依赖,以便在没有实际硬件或外部系统的情况下进行接口测试。 3. 测试管理:可以使用Python的测试框架(如PyTest)来管理和执行测试用例,包括测试套件的组织和测试结果的报告生成。 4. 数据分析:使用Python的数据分析库(如Pandas)可以对测试结果进行统计和分析,以便更好地理解接口的性能和稳定性。 5. 集成和持续集成:由于Python具有良好的集成能力,该Demo可以很容易地与其他测试工具和持续集成系统进行集成,以实现自动化测试流程。 通过Python嵌入式软件接口测试Demo,我们可以快速开发和执行接口测试,验证嵌入式软件接口的正确性和稳定性,帮助开发团队及时发现和修复潜在的问题,提高软件质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值