0
点赞
收藏
分享

微信扫一扫

python SQLAlchemy数据库操作


文章目录

  • ​​1 增​​
  • ​​2 删​​
  • ​​3 改​​
  • ​​4 基础查询​​
  • ​​4.1 基础查询汇总​​
  • ​​4.2 限制查询​​
  • ​​4.3 计数​​
  • ​​4.4 去重​​
  • ​​4.5 排序​​
  • ​​4.6 模糊查询​​
  • ​​4.7 分组查询​​
  • ​​4.8 聚合函数​​
  • ​​5 多表查询​​
  • ​​5.1 内连接​​
  • ​​5.2 左外连接​​
  • ​​5.3 复杂查询​​
  • ​​5.4 三表连接​​
  • ​​5.5 利用SQLAlchemy执行原生SQL​​
  • ​​6 原生语句查询 返回json格式​​
  • ​​3 统计数量​​

1 增

Customer为表名

python SQLAlchemy数据库操作_数据库

try:
username = '123456'
customerInfo = Customer(username=username)
db.add(customerInfo) # 添加数据
db.commit() # 提交即保存到数据库
except Exception as e:
db.rollback()
print(e)

2 删

# 删除
@route('/professionDeleteType/<num>')
def professionDeleteType(db,num):
print(num)

try:
print('--------删除--------------')
print(num)
TypeNameInfo = db.query(Profession).filter(Profession.pid==int(num)).delete()
db.commit() # 提交即保存到数据库
# db.close() # 关闭会话
except Exception as e:
print(e)

return redirect('/profession')

3 改

Users表

python SQLAlchemy数据库操作_数据库_02

try:
username = db.query(Users).filter_by(username=username).first()
username.nickname = Hnickname
username.img_url = Himg_url
db.commit()
except:
db.rollback()
print(e)
return json.dumps({'data': 0, 'info': '内部错误,请刷新!!!'})

4 基础查询

4.1 基础查询汇总

# select * from users;
result = db.query(Users).all()
# select uid, username from users;
result = db.query(Users.uid, Users.username).all()
# select * from users where uid=17 and username='666';
result = db.query(Users).filter_by(uid=17, username='666').all()
# select * from users where uid>=16 or username='666';
result = db.query(Users).filter(or_(
Users.uid >= 16,
Users.username == '666'
)).all()

4.2 限制查询

# 查询前3行
result = db.query(Users).limit(3).all()
# select * from users limit 3,5;
result = db.query(Users).limit(3).offset(3).all()

​limit​​​:查询多少条
​​​offset​​:偏移量 -> 3 表示从第4条开始

4.3 计数

select count(*) from users where ...

​filter​​:== >= < > != != in not

count = db.query(Users).filter(Users.uid > 16).count()
print(count)

4.4 去重

select distinct(openid) from users;

result = db.query(Users.openid).distinct(Users.openid).all()
print(result)
for row in result:
print(row.openid)

4.5 排序

select * from users order by uid desc;

result = db.query(Users).order_by(Users.uid.desc()).all()

4.6 模糊查询

select * from users where username like '%929%';

result = db.query(Users).filter(Users.username.like('%929%')).all()

4.7 分组查询

select * from users group by isAdmin;

result = db.query(Users).group_by(Users.openid).all()
result = db.query(Users).group_by(Users.openid).having(Users.uid > 2).all()

4.8 聚合函数

​min​​​、​​max​​​、​​avg​​​、​​sum​

select sum(u_dealNum) from users;

result = db.query(func.sum(Users.u_dealNum)).first()
print(result)

5 多表查询

5.1 内连接

查询发表过文章的 用户信息+文章信息

select a_title from users, article where users.uid=article.uid and article.a_id=1;
select a_title from article inner join users on users.uid=article.uid where article.a_id=1;

# 多表查询时,返回的结果集不再是单纯的[Model, Model]数据结构,而是每张表的结果有独立的对象来维护
result = db.query(Article, Users).join(Users, Article.uid == Users.uid).filter(Article.a_id == 1).all()
print(result)
for article, users in result:
print(article.uid, article.a_title, users.username)

result = db.query(Article, Users.username).join(Users, Article.uid == Users.uid).filter(Article.a_id == 1).all()
print(result)
for article, username in result:
print(article.uid, article.a_title, username)

5.2 左外连接

查询所有用户 写的文章阅读量

select nickname,a_title,sum(a_pageviews) as total from users left join article on users.uid=article.uid group by users.uid having total>0;

result = db.query(Users.uid, Users.nickname, func.sum(Article.a_pageviews)).outerjoin(Article, Users.uid == Article.uid).group_by(Users.uid).all()

5.3 复杂查询

​and和or混用​​​: ​​username like 'charles' or uid>1 and nickname='导演'​

result = db.query(Users).filter(
or_(Users.username.like('charles'), and_(Users.uid > 1, Users.nickname == "导演"))).all()
result = db.query(Users).filter(Users.username.like('charles'), or_(Users.uid > 1, Users.nickname == "导演")).all()
print(result)
for row in result:
print(row.uid, row.username)

5.4 三表连接

result = db.query(Article, Users).join(Users, Article.uid == Users.uid) \
.join(Label, Article.l_id == Label.l_id).all()

5.5 利用SQLAlchemy执行原生SQL

result = db.execute("select * from users").fetchall()
print(result)

6 原生语句查询 返回json格式

try:
sql = ''
Info = db.execute(sql)
print(Info)
except Exception as e:
db.rollback()
print(e)

results = []
for i in searchs:

bid = i['bid'] # 索引
isbn = i['isbn'] # isbn
print(bid)
print(isbn)

result = {
"bid": bid,
"isbn": isbn,
}
print(result)
results.append(result)

data = {
"status": '1',
"results": results
}
return json.dumps(data)

3 统计数量

from sqlalchemy import func

older_num = db.query(func.count(Order_history.seller)).filter_by(seller=uname).scalar()

​​Sqlchemy查询结果转json​​MySQL 查询统计 日期查询


举报

相关推荐

0 条评论