自动化测试中常常需要访问数据库来获得所需数据,Python里访问数据库的Library有很多,例如MySQL ,SQLite, SQLAlchemy 等,运用最广泛的当属SQLAlchemy, 我们今天就以SQLAlchemy为例,讲下如何连接,使用,更新数据库。
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.
SQLAlchemy is most famous for its object-relational mapper (ORM), an optional component that provides the data mapper pattern, where classes can be mapped to the database in open ended, multiple ways - allowing the object model and database schema to develop in a cleanly decoupled way from the beginning.
如何安装:
如何使用:
根据上面的代码我们来逐步说明sqlalchemy的使用步骤:
- 连接数据库create_engine()用来初始化数据库连接,语法如下:123from sqlalchemy import create_engine'sqlite:///:memory:', echo=True)engine = create_engine(
‘数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名’ - 声明mapping关系
参考上面代码的#1和#2之间的代码。 ClassAudit是数据库表名,这里我们用来来和数据库中真实存在的table对应。要对应的table可以是已经存在的,也可以是要新建立的,如果是新建立的,那么顺序执行下面的3步。否则略过。 - 创建一个数据库表格并插入数据
#创建数据库12345678910111213141516171819from sqlalchemy import Table, MetaDataengine = create_engine('sqlite:///:memory:')metadata = MetaData()user = Table('user', metadata,Column('user_id', Integer, primary_key=True),Column('user_name', String(16), nullable=False),Column('email_address', String(60), key='email'),Column('password', String(20), nullable=False))metadata.create_all(engine)#插入数据ins = user.insert().values(name='kevin', fullname='Kevin cai')conn = engine.connect()result = conn.execute(ins) - 创建一个session123DBSession = sessionmaker(bind=self.engine)self.dbsession = DBSession()
- 增加或者更新数据库对象
当需要添加数据库记录时使用,也可以用第3步的方法来插入数据。12345new_audit = ClassAudit(Class_id=1, =’123’,,,,)self.dbsession.add(ClassAudit)self.dbsession.commit()self.dbsession.close() - 查询
Query的关键字和函数用法如下:以上就是sqlalchemy对数据库的操作,这个通常在有很多表格并且这些表格有联系的情况下使用,如果你的代码里只需要查询独立的几个表格,你完全可以不建立表格的对应关系,直接使用sql语句,做法为删除掉上面#1和#2之间的代码,并且参考main函数中Method2的代码即可。123456789AND:from sqlalchemy import and_session.query.filter(and_(User.name == 'kevin', User.fullname == kevin cai'))LIKE:session.query.filter(User.name.like('%test'))all() :returns a list:query = session.query(User).filter(User.name.like('%ed')).order_by(User.id)query.all()
SQLAlchemy是ORM技术的典型代表,希望大家都学会如何使用(Object-Relational Mapping,把关系数据库的表结构映射到对象上)。