31Python MysSQL - mysql-connector驱动

使用pip命令安装mysql-connector:

python -m pip install mysql-connector

效果图如下(如果使用的是Anaconda,需要进入它的命令行窗口,执行如下操作):

使用以下代码测试mysql-connector是否安装成功:

# -*- coding: UTF-8 -*-import mysql.connector

执行以上代码,如果没有产生错误,表明安装成功。

**注意:**如果你的 MySQL 是 8.0 版本,密码插件验证方式发生了变化,早期版本为 mysql_native_password,8.0 版本为 caching_sha2_password,所以需要做些改变:
先修改 my.ini 配置:

[mysqld]
default_authentication_plugin=mysql_native_password

然后在 mysql 下执行以下命令来修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

更多内容可以参考:Python MySQL8.0 链接问题(https://www.runoob.com/note/45833)

31.1创建数据库连接

可以使用以下代码来连接数据库:

import mysql.connectormydb = mysql.connector.connect(host="localhost",       # 数据库主机地址user="yourusername",    # 数据库用户名passwd="yourpassword"   # 数据库密码
)print(mydb)

31.2创建数据库

创建数据库使用 “CREATE DATABASE” 语句,以下创建一个名为 runoob_db 的数据库:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",password="123456"
)mycursor = mydb.cursor()mycursor.execute("CREATE DATABASE runoob_db")

打开mysql的GUI客户端,可以看到如下效果:

31.3创建数据库表

创建数据表使用”CREATE TABLE”语句,创建数据表前,需要确保数据库已存在,以下创建一个名为sites的数据表:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")

执行成功后,我们可以看到数据库创建的数据表sites,字段为name和url

我们也可以使用”SHOW TABLES”来查看数据表是否已存在:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()mycursor.execute("SHOW TABLES")for x in mycursor:print(x)

运行结果:

('sites',)

31.3.1主键设置

创建表的时候我们一般都会设置一个主键(PRIMARY KEY),我们可以使用 “INT AUTO_INCREMENT PRIMARY KEY” 语句来创建一个主键,主键起始值为 1,逐步递增。

如果我们的表已经创建,我们需要使用 ALTER TABLE 来给表添加主键:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY");

也可以在表还没创建的时候,一步到位,将主键添加上去。

31.4插入数据

插入数据使用”INSERT INTO”语句:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "INSERT INTO sites(name,url) VALUES (%s,%s)"
val = ("RUNOOB","https://www.runoob.com")
mycursor.execute(sql,val)mydb.commit()    #数据表内容有更新,必须使用到该语句
print(mycursor.rowcount,"条记录插入成功。")

运行结果:

1 条记录插入成功。

31.5批量插入

批量插入使用executemany()方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "INSERT INTO sites(name,url) VALUES (%s,%s)"
val = [('Google','http://www.google.com'),('Github','https://www.github.com'),('Taobao','https://www.taobao.com'),('stackoverflow','https://www.stackoverflow.com')
]
mycursor.executemany(sql,val)mydb.commit()        #数据表内容有更新,必须使用该语句
print(mycursor.rowcount,"条记录插入成功。")

运行结果:

4 条记录插入成功。

执行以上代码后,我们可以看看数据表的记录:

如果我们想在数据记录插入后,获取该记录的ID,可以使用以下代码:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "INSERT INTO sites(name,url) VALUES (%s,%s)"
val = ("Zhihu","https://www.zhihu.com")
mycursor.execute(sql,val)mydb.commit()        #数据表内容有更新,必须使用该语句
print("1 条记录已插入,ID:",mycursor.lastrowid)

运行结果:

1 条记录已插入,ID: 6

31.6查询数据

查询数据使用SELECT语句:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()mycursor.execute("SELECT * FROM sites")myresult = mycursor.fetchall()       #fetchall()获取所有记录for x in myresult:print(x)

运行结果:

('RUNOOB', 'https://www.runoob.com', 1)
('Google', 'http://www.google.com', 2)
('Github', 'https://www.github.com', 3)
('Taobao', 'https://www.taobao.com', 4)
('stackoverflow', 'https://www.stackoverflow.com', 5)
('Zhihu', 'https://www.zhihu.com', 6)

也可以读取指定的字段数据:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()mycursor.execute("SELECT name,url FROM sites")myresult = mycursor.fetchall()       #fetchall()获取所有记录for x in myresult:print(x)

运行结果:

('RUNOOB', 'https://www.runoob.com')
('Google', 'http://www.google.com')
('Github', 'https://www.github.com')
('Taobao', 'https://www.taobao.com')
('stackoverflow', 'https://www.stackoverflow.com')
('Zhihu', 'https://www.zhihu.com')

如果我们只想读取一条记录,可以使用fetchone()方法:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()mycursor.execute("SELECT name,url FROM sites")myresult = mycursor.fetchone()print(myresult)

运行结果:

('RUNOOB', 'https://www.runoob.com')

31.7Where条件语句

如果我们要读指定条件的数据,可以使用where语句

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()# sql = "SELECT * FROM sites WHERE url LIKE '%oo%'"
sql = "SELECT * FROM sites WHERE name = 'RUNOOB'"
mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult:print(x)

执行结果:

('RUNOOB', 'https://www.runoob.com', 1)

为了防止数据查询发生SQL注入的攻击,我们可以使用%s占位符来转义查询的条件:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "SELECT * FROM sites WHERE name = %s"
na = ("RUNOOB",)mycursor.execute(sql,na)myresult = mycursor.fetchall()for x in myresult:print(x)

运行结果:

('RUNOOB', 'https://www.runoob.com', 1)

31.8排序

查询结果排序可以使用ORDER BY语句,默认的排序方式为升序,关键字为ASC,如果要设置降序排序,可以设置关键字DESC。

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()# sql = "SELECT * FROM sites LIMIT 3"
# sql = "SELECT * FROM sites LIMIT 3 OFFSET 1"
# sql = "SELECT * FROM sites ORDER BY name DESC"
sql = "SELECT * FROM sites ORDER BY name"mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult:print(x)

运行结果:

('Github', 'https://www.github.com', 3)
('Google', 'http://www.google.com', 2)
('RUNOOB', 'https://www.runoob.com', 1)
('stackoverflow', 'https://www.stackoverflow.com', 5)
('Taobao', 'https://www.taobao.com', 4)
('Zhihu', 'https://www.zhihu.com', 6)

31.9删除记录

删除记录使用”DELETE FROM”语句

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "DELETE FROM sites WHERE name = 'stackoverflow'"
mycursor.execute(sql)mydb.commit()
print(mycursor.rowcount,"条记录删除")

运行结果:

1 条记录删除


注意:要慎重使用删除语句,删除语句要确保指定了 WHERE 条件语句,否则会导致整表数据被删除。
为了防止数据库查询发生SQL注入的攻击,我们可以使用%s占位符来转义删除语句的条件

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "DELETE FROM sites WHERE name = %s"
na = ('Taobao',)
mycursor.execute(sql,na)mydb.commit()
print(mycursor.rowcount,"条记录删除")

31.10更新表数据

数据表更新用”UPDATE”语句:

# -*- coding: UTF-8 -*-import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)mycursor = mydb.cursor()sql = "UPDATE sites SET NAME = 'ZH' WHERE name='Zhihu'"
mycursor.execute(sql)mydb.commit()
print(mycursor.rowcount,"条记录被更新")

注意: UPDATE 语句要确保指定了 WHERE 条件语句,否则会导致整表数据被更新。

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义更新语句的条件:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)
mycursor = mydb.cursor()sql = "UPDATE sites SET name = %s WHERE name = %s"
val = ("Zhihu", "ZH")mycursor.execute(sql, val)mydb.commit()print(mycursor.rowcount, " 条记录被修改")

31.11删除表

删除表使用 “DROP TABLE” 语句, IF EXISTS 关键字是用于判断表是否存在,只有在存在的情况才删除:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="runoob_db"
)
mycursor = mydb.cursor()sql = "DROP TABLE IF EXISTS sites"  # 删除数据表 sitesmycursor.execute(sql)

32Python3 MySQL数据库连接 - PyMySQL驱动

32.1什么是PyMySQL安装?

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

32.2PyMySQL安装

在使用PyMySQL之前,我们需要确保PyMySQL已安装。
PyMySQL下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的PyMySQL:

pip3 install PyMySQL


如果你的系统不支持 pip 命令,可以使用以下方式安装:

1、使用 git 命令下载安装包安装(你也可以手动下载):

$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install

2、如果需要制定版本号,可以使用 curl 命令来安装:

$ # X.X 为 PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
$ # 现在你可以删除 PyMySQL* 目录

注意:请确保您有root权限来安装上述模块。

安装的过程中可能会出现"ImportError: No module named setuptools"的错误提示,意思是你没有安装setuptools,你可以访问https://pypi.python.org/pypi/setuptools 找到各个系统的安装方法。

Linux 系统安装实例:

$ wget https://bootstrap.pypa.io/ez_setup.py
$ python3 ez_setup.py

32.3数据库连接

连接数据库前,请先确认以下事项:
您已经创建了数据库 TESTDB.
在TESTDB数据库中您已经创建了表 EMPLOYEE
EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
连接数据库TESTDB使用的用户名为 “testuser” ,密码为 “test123”,你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。
在你的机子上已经安装了 Python MySQLdb 模块。
如果您对sql语句不熟悉,可以访问我们的 SQL基础教程
实例:
以下实例链接MySQL的TESTDB数据库:

# -*- coding: UTF-8 -*-import pymysql#打开数据库连接
db = pymysql.connect("localhost","root","123456","TESTDB")#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()#使用execute()方法执行SQL查询
cursor.execute("SELECT VERSION()")#使用fetchone()方法获取单条数据
data = cursor.fetchone()print("Database version : %s " % data)#关闭数据库连接db.close()

运行结果:

Database version : 5.6.21-log

32.4创建数据库表

如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:

# -*- coding: UTF-8 -*-import pymysql#打开数据库连接
db = pymysql.connect("localhost","root","123456","TESTDB")#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()#使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")#使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE(FIRST_NAME CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT,SEX CHAR(1),INCOME FLOAT)"""cursor.execute(sql)#关闭数据库连接
db.close()

运行结果:

32.5数据库插入操作

以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录:

# -*- coding: UTF-8 -*-import pymysql#打开数据库连接
db = pymysql.connect("localhost","root","123456","TESTDB")#使用cursor()方法获取操作游标
cursor = db.cursor()#SQL 插入语语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME)VALUES('Mac','Mohan',20,'M',2000)"""try:#执行sql语句cursor.execute(sql)#提交到数据库执行db.commit()
except:#如果发生错误则回滚db.rollback()#关闭数据库连接
db.close()

运行结果:

以上例子也可以写成如下形式:

# -*- coding: UTF-8 -*-import pymysql#打开数据库连接
db = pymysql.connect("localhost","root","123456","TESTDB")#使用cursor()方法获取操作游标
cursor = db.cursor()#SQL插入语句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \LAST_NAME, AGE, SEX, INCOME) \VALUES ('%s','%s',%s,'%s',%s)" % \('Mac','Mohan',20,'M',2000)try:#执行sql语句cursor.execute(sql)#执行sql语句db.commit()
except:#发生错误时回滚db.rollback()#关闭数据库连接
db.close()

运行结果:

32.6数据库查询操作

Python查询Mysql使用fetchone()方法获取单条数据,使用fetchall()方法获取多条数据。
fetchone():该方法获取下一个查询结果集。结果集是一个对象。
fetchall():接收全部的返回结果行。
rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。
实例:
查询EMPLOYEE表中的salary(工资)字段大于1000的所有数据:

# -*- coding: UTF-8 -*-import pymysql#打开数据库连接
db = pymysql.connect("localhost","root","123456","TESTDB")#使用cursor()方法获取操作游标
cursor = db.cursor()# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE " \"WHERE INCOME > %s" % (1000)try:#执行SQL语句cursor.execute(sql)#获取所有记录列表results = cursor.fetchall()for row in results:fname = row[0]lname = row[1]age = row[2]sex = row[3]income = row[4]#打印结果print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \(fname,lname,age,sex,income))
except:print("Error:unable to fetch data")#关闭数据库连接
db.close()

运行结果:

fname=Mac,lname=Mohan,age=20,sex=M,income=2000.0
fname=Mac,lname=Mohan,age=20,sex=M,income=2000.0

32.7数据库更新操作

更新操作用于更新数据表的的数据,以下实例将 TESTDB 表中 SEX 为 ‘M’ 的 AGE 字段递增 1:

# -*- coding: UTF-8 -*-import pymysql# 打开数据库连接
db = pymysql.connect("localhost", "root", "123456", "TESTDB")# 使用cursor()方法获取操作游标
cursor = db.cursor()# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % 'M'
try:# 执行SQL语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 发生错误时回滚db.rollback()# 关闭数据库连接
db.close()

运行结果:

上满的结果是AGE的值增大了1

32.8删除操作

删除操作用于删除数据表中的数据,以下实例演示了删除数据表EMPLOYEE中的AGE大于20的所有数据:

# -*- coding: UTF-8 -*-import pymysql#打开数据库连接
db = pymysql.connect("localhost","root","123456","TESTDB")#使用cursor()方法获取操作游标
cursor = db.cursor()# SQL删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % 20try:#执行SQL语句cursor.execute(sql)#提交修改db.commit()
except:#发生错误时回滚db.rollback()#关闭连接
db.close()

32.9执行事务

事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。

# SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:# 执行SQL语句cursor.execute(sql)# 向数据库提交db.commit()
except:# 发生错误时回滚db.rollback()

对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

32.10错误处理

DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行相关推荐

  1. python从云端数据库获取数据失败_使用%s的Python MySQL Connector数据库查询失败

    使用%s的Python MySQL Connector数据库查询失败 我有一个基本程序,应该查询包含用户信息的数据库.我正在尝试为特定用户选择信息并将其打印到控制台. 这是我的代码:import my ...

  2. mysql中创建数据表

    从今天开始学习mysql数据库,希望以后能够记录自己学习的点点滴滴 mysql中创建数据表 1.创建一个数据库为test_db mysql> create database test_db; Q ...

  3. python查询mysql数据库_python针对mysql数据库的连接、查询、更新、删除操作示例...

    本文实例讲述了python针对mysql数据库的连接.查询.更新.删除操作.分享给大家供大家参考,具体如下: 连接 一 代码 import pymysql # 打开数据库连接 db = pymysql ...

  4. python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...

    Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...

  5. navicat mysql创建表_Navicat for MySQL如何创建数据表

    Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,本教程将详解Navicat for MySQL创建数据表的方法. 步骤一:新建连接 运行Navi ...

  6. mysql交互式创建表_用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

  7. php语句创建数据表,用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

  8. python mysql 清空表数据

    mydb = mysql.connector.connect(user=user, password=pwd, host='127.0.0.1', database='stock') mycursor ...

  9. mysql数据库添加数据语句怎么写_在数据库里面插入数据的语句怎么写?

    添加数据记录: sql="insert into 数据表 (字段1,字段2,字段3 -) values (值1,值2,值3 -)" sql="insert into 目标 ...

  10. 无法删除所有指定的值_SQL-插入、更新、删除、创建

    SQL必知必会-读书笔记(19-21章) 十九.插入数据 1.插入完整的行 应该该出列名和值,此时可以省略那些有默认值或允许为NULL值得列. 如果发生错误,则插入失败. INSERT 2.插入多行 ...

最新文章

  1. 11. Android框架和工具之 Logger(调试代码)
  2. rocketmq 初探(四)
  3. 由H3C高层变动对厂商认证的思考
  4. CentOs中mysql的安装与配置
  5. GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数?
  6. Fun with Opterons, SATA, and INNODB
  7. 保证服务4个9的可用性的核心思路
  8. 存储器容量计算及相关概念
  9. JWplayer入门及使用
  10. 3D数学 AABB(轴对齐矩形边界框)
  11. 计算机网络 pan名词解释,计算机网络名词解释
  12. tx:advice相关参数说明
  13. 安卓下的c语言ide,C语言编译器IDEapp-C语言编译器IDE安卓版下载v2.4.0-飞飞世界
  14. 昵图网共享分下载代包下素材nipic呢图下载币图网设计素材下载
  15. 从档案信息管理到档案知识管理
  16. Charles的安装和注册码破解
  17. linux shell数字怎么比较大小,Linux Shell 数字计算与比较
  18. 椭圆光学性质的几何证明
  19. 一秒录音转文字,一键同声翻译,这两款软件简直无敌!
  20. Oracle数据库实验4 Oracle数据库安全管理

热门文章

  1. anaconda虚拟环境教程大全
  2. VTK:绘制BorderPixelSize边框像素大小用法实战
  3. OpenCASCADE :VTK集成服务(VIS) 之组件架构
  4. OpenCASCADE:Modeling Algorithms模块之Sweeping: Prism, Revolution and Pipe
  5. OpenCASCADE:Android交叉编译 OCCT库
  6. OpenCASCADE:MFC示例
  7. wxWidgets:wxSingleInstanceChecker类用法
  8. boost::multiprecision模块实现MPC后端对多精度复数的使用的测试程序
  9. boost::mpl模块实现replace_if相关的测试程序
  10. boost::mpl模块实现multiset相关的测试程序