Mac配置PyQt

Mac OS X 配置 PyQt

配置过程略繁琐,首先要安装qmake 然后安装sip  然后安装PyQt4/PyQt5 再然后想安装Eric的话需要安装QScintilla2
1.安装qmake
去http://www.qt.io/download-open-source/ 下载Qt安装包,License 选择GNU 不然后面没发安装PyQt

安装好后配置环境变量

[code]
export PATH="/Users/lvxinwei/Qt/5.5/clang_64/bin:$PATH"
[/code]

写在 .bash_profile 然后source .bash_profile
然后运行qmake看下是否成功了
2.下面安装sip
下载好sip后

[code]
python configure.py
make
sudo make install
[/code]

3.安装PyQt

[code]
python configure.py -d /Library/Python/2.7/site-packages/ –sip /System/Library/Frameworks/Python.framework/Versions/2.7/bin/sip
make
sudo make install
[/code]

4.安装QScintilla2
先进入Qt4Qt5 然后

[code]
qmake qscintilla.pro -spec macx-g++
make
sudo make install
[/code]

再进入Python目录

[code]
python configure.py –sip /System/Library/Frameworks/Python.framework/Versions/2.7/bin/sip
[/code]

再然后进去designer-Qt4Qt5 目录

[code]
qmake designer.pro -spec macx-g++
make
sudo make install
[/code]

完成

MySQL修改表存储引擎

MySQL作为最常用的数据库,经常遇到各种各样的问题。今天要说的就是表存储引擎的修改。有三种方式,列表如下。

1.真接修改。在数据多的时候比较慢,而且在修改时会影响读取性能。my_table是操作的表,innoDB是新的存储引擎。

[code]ALTER TABLE my_table ENGINE=InnoDB[/code]

2.导出,导入。这个比较容易操作,直接把导出来的sql文件给改了,然后再导回去。用mysqldump ,
3.创建,插入。这个比第一种速度快, 安全性比第二种高,推荐。分2步操作
a.创建表,先创建一个和要操作表一样的表,然后更改存储引擎为目标引擎。
[code]CREATE TABLE my_tmp_table  LIKE my_table;[/code]
[code]ALTER TABLE my_tmp_table ENGINE=InnoDB;[/code]
b.插入。为了安全和速度,最好加上事务,并限制id(主键)范围。
[code]INSERT INTO my_tmp_table  SELECT *  FROM my_table;[/code]
修改数据库字符集:
[code]ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE …];[/code]
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
[code]ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE …][/code]
如:[code]ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;[/code]
只是修改表的默认字符集:
[code]
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE…];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
[/code]

修改字段的字符集:
[code]ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE …];
如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;[/code]
查看数据库编码:
[code]SHOW CREATE DATABASE db_name;[/code]
查看表编码:
[code]SHOW CREATE TABLE tbl_name;[/code]
查看字段编码:
[code]SHOW FULL COLUMNS FROM tbl_name;[/code]

MySQL行锁表锁

在调用存储过程中,就会涉及到表锁,行锁这一概念:所谓区别:有索引的时候就是行锁,没有索引的时候就是表索。innodb 的行锁是在有索引的情况下,没有索引的表是锁定全表的。
表锁演示(无索引)
Session1:

set autocommit=0;
select * from innodb_test;

+——+————-+
| id   | name        |
+——+————-+
|    1 | woshiceshi  |
|    2 | woshiceshi2 |
|    3 | woshiceshi3 |
+——+————-+

 select * from innodb_test where id = 2 for update;

+——+————+
| id   | name       |
+——+————+
|    2 | woshiceshi2 |
+——+————+
Session2:

 update innodb_test set name='sjis' where id = 1 ;

处于等待状态….
再回到session1 commit以后,session2就出来结果了(锁定了8秒,过了8秒左右才去session1提交)。

update innodb_test set name='sjis' where id = 1 ;
Query OK, 1 row affected (8.11 sec)
Rows matched: 1  Changed: 1  Warnings: 0

实验结果是:我在session1的for update 操作看似只锁定ID为2的行其实锁定了全表,以至于后面session2的对ID为1的行update 需要等待Session1锁的释放。

行锁演示(索引为ID)
Session1:

alter table innodb_test add index idx_id(id);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0
select * from innodb_test where id = 2 for update;

+——+————+
| id   | name       |
+——+————+
|    2 | woshiceshi2 |
+——+————+
Session2:

update innodb_test set name='wohaishiceshi' where id = 1 ;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0
select * from innodb_test where id = 1;

+——+—————+
| id   | name          |
+——+—————+
|    1 | wohaishiceshi |
+——+—————+
1 row in set (0.00 sec)

实验结果:这次的锁定是锁定的行,所以没有被锁定的行(ID不为2的行)可以进行update..

iptable配置

[shell]

iptables   -A   OUTPUT   -d  wlt.ustc.edu.cn    -j   REJECT

[/shell]

1.创建/etc/iptables文件(文件名可以随意取)

2.创建/etc/network/if-pre-up.d/iptables文件,并给予其执行权限
root@godontop:~# touch /etc/network/if-pre-up.d/iptables
root@godontop:~# chmod +x /etc/network/if-pre-up.d/iptables
3.编辑/etc/network/if-pre-up.d/iptables文件,使其内容如下:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables
4.配置iptables,过程略,配置好iptables后,将配置保存到/etc/iptables文件中即可
root@godontop:~# iptables-save > /etc/iptables

安装MySQLdb 出错的解决

[code]

pip install mysql-python

[/code]

显示如下错误

[code]

EnvironmentError: mysql_config not found

[/code]

然后我查找这个文件是否存在

[code]

find / -name mysql_config

[/code]

显示不存在,然后我在网上找到原因说是mysql的一些开发包没有安装,我安装一下就行了

[code]
apt-get install python-dev libmysqlclient-dev
[/code]