分类 "MySQL" 下的文章

问题:python,tornado,sqlalchemy表单传入的数据太多,如何一次性获取,快速添加
解决:使用self.get_arguments,User(**args)
方法:
userinfo = self.get_arguments('userinfo')
user = User(**userinfo)
self.db.add(user)

问题:mysql如何导出数据库单张表?
方法:
mysqldump -uroot -p mydata users > users.sql

问题:阿里云 mysql 运行一段时间就崩,mysql无法重启,The server quit without updating PID file
解决:因为是便宜的服务器,所以内存小,内存不足引起的
方法:
方法一:重启服务器,最快的方法,但运行一段时间之后还会崩
方法二:修改配置文件,减小php-fpm的进程数等
1、sudo vim nginx.conf   将进程数和线程数减小
worker_processes 1;
worker_connections 256;
2、sudo vim php-fpm.conf  将下列值改小
pm.max_children
,子进程最大数
pm.start_servers
,启动时的进程数
pm.min_spare_servers
,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers
,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

3、重启nginx,重启php-fpm

参考:http://blog.csdn.net/wanderman1836/article/details/42462571

问题:如果更改数据表字段名称
解决:使用alter命令
方法:
将users表中name字段修改为username
alter table users change name username varchar(64);

问题:sqlalchemy/mysql查询数据比较慢,如何解决
解决:查询数据时避免查询全部,如果数据表字段很多,查询会非常慢
方法:
usersql = select * from users where age > 12;
优化,只查询需要的字段
usersql = select name, age from users where age > 12;
sqlalchemy
user = self.db.query(User).filter(User.age > 12).all()
优化
user = self.db.query(User.name, User.age).filter(User.age > 12).all()

获得数据的条数:
count = self.db.query(User).filter(User.age==12).count()
查询速度更快的方法
count = self.db.query(func.count('1')).select_from(User).filter(User.age==12).scalar()

注: 如果数据表字段很少,效果不明显,如果有十几个字段,这样写速度反应会很明显变快了。