连接
1
| app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1234@1234:3306/testDB?charset=utf8'
|
使用pymysql驱动连接mysql
Modle 类(模型)
1 2 3 4 5 6 7 8
| class Job(db.Model): id=db.Column(db.Integer,primary_key=True) jobName = db.Column(db.TEXT,default="NULL") company = db.Column(db.TEXT,default="NULL") city = db.Column(db.TEXT,default="NULL") pay = db.Column(db.TEXT,default="NULL") date = db.Column(db.TEXT,default="NULL")
|
注意事项:
继承db.Model类
__tablename__:指定表名,如果不指定默认类名
primary_key=True:主键,必须有一个主键
autoincrement=True:自增字段
参考资料:
SQLAlchemy查询过滤器和执行函数
sqlalchemy常见数据类型及配置
备注:
__init__:构造方法
__repr__: 用来表示对象的可打印字符串
*同时定义 __repr__ 方法和 __str__ 方法时,print() 方法会调用 __str__ 方法*
搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| print(db.session.query(User).all()) print(db.session.query(User.name, User.fullname).all()) print(db.session.query(User, User.name).all())
print(db.session.query(Job).filter_by(name='user1').all()) print(db.session.query(Job).filter(Job.name == "user").all()) print(db.session.query(Job).filter(Job.company.like("%云计算%")).all()
print(session.query(User).filter(and_(User.name.like("%user%"), User.fullname.like("%first%"))).all()) print(session.query(User).filter(or_(User.name.like("%user%"), User.password != None)).all())
|
备注:
1 2 3 4 5 6 7
| from sqlalchemy import or_
words = ['%云计算%', '%大数据%']
rule = or_(*[Job.company.like(w) for w in words]) print(rule) print(Job.query.filter(rule).all())
|
这里涉及到星号变量和列表生成式。
首先回顾一下列表生成式(List Comprehensions)。
[Job.company.like(w) for w in words] ==> [Job.company.like(%云计算%),Job.company.like(%大数据%)]
这样的一个列表,通过星号变量,将列表拆分,传参给or_()函数,最终形成多条件查询代码。