问题:sqlalchemy使用中,如何更新数据库数据
方法:
一、使用update方法
self.db.query(User).filter(User.id == 12).update({User.age:12})
# 上面这句返回的是id
self.db.commit()
二、使用赋值方法
userInfo = self.db.query(User).get(12)
if userInfo: # 这是对象
userInfo.age = 12
self.db.commit()
问题:sqlalchemy使用中,如何更新数据库数据
方法:
一、使用update方法
self.db.query(User).filter(User.id == 12).update({User.age:12})
# 上面这句返回的是id
self.db.commit()
二、使用赋值方法
userInfo = self.db.query(User).get(12)
if userInfo: # 这是对象
userInfo.age = 12
self.db.commit()
问题:看一个进程的启动
方法:
ps -ef | grep redis
问题:查看6379端口是否被占用
方法:
netstat -tunple | grep 6379
或
sudo ss -tulnp | grep 6379
sqlalchemy联合查询两个表的数据,
查询Subject表所有数据,如果Subject有对应的Lesson数据就显示出来,没有就不显示
subjects = self.db.query(Subject.id, Subject.name, Subject.level,
Subject.children, Lesson.id.label('lesson'))
.outerjoin((Lesson, Subject.id==Lesson.subject_id))
.order_by(Subject.level).all()
注:效率很低
问题:使用sqlalchemy如何随机获取数据?
解决:使用self.db.execute解析原生sql
方法:
user = self.db.execute(
"""SELECT * FROM users AS t1 JOIN(
SELECT ROUND(
RAND() * ((SELECT MAX(id) FROM users)-(SELECT MIN(id) FROM users))
+(SELECT MIN(id) FROM users)
) AS rid
) AS t2
WHERE t1.id >= t2.rid
ORDER BY t1.id LIMIT 1;""").fetchone()
注:只能产生一条随机数据,产生多条时可使用fechall(),但是是顺序下去的
products = self.db.execute(
"select id from products order by rand() limit 10;").fetchall()
这种方法是可以产生多条数据的
考虑到此方法效率不高,建议使用循环调用方法一
参考:
http://www.mantutu.com/index.php/mysql/271.html
问题:mysql5.7错误:[Err] 1146 - Table 'performance_schema.session_status' doesn't exist
解决:运行mysql_upgrade
方法:
cd /etc/mysql
mysql_upgrade -uroot -p --force
sudo service mysql restart