kcweb内置了抽象数据库访问层,把数据库操作封装起来,我们只需要使用公共的mysql方法进行操作,而无需对数据库写原生的sql实现
如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。
##数据库配置信息
在公共配置目录或者模块配置目录(不清楚配置目录位置的话参考基础章节下的配置)下面的______init__.py中配置下面的数据库参数:
```__init__.py
database['type']='mysql' # 数据库类型 目前支持mysql
database['host']=['127.0.0.1']#服务器地址 [地址1,地址2,地址3...] 多个地址分布式(主从服务器)下有效
database['port']=[3306] #端口 [端口1,端口2,端口3...]
database['user']=['root'] #用户名 [用户名1,用户名2,用户名3...]
database['password']=['root'] #密码 [密码1,密码2,密码3...]
database['db']=['test'] #数据库名 [数据库名1,数据库名2,数据库名3...]
database['charset']='utf8' #数据库编码默认采用utf8
database['pattern']=False # True数据库长连接模式 False数据库短连接模式 注:建议web应用使用短连接,cli应用使用长连接
database['cli']=False # 是否以cli方式运行
database['dbObjcount']=1 # 连接池数量(单个数据库地址链接数量),数据库链接实例数量 mysql长链接模式下有效
database['deploy']=0 # 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) mysql数据库有效
database['master_num']=1 #主服务器数量 不能超过host服务器数量 (等于服务器数量表示读写不分离:主主复制。 小于服务器表示读写分离:主从复制。) mysql数据库有效
database['master_dql']=False #主服务器是否可以执行dql语句 是否可以执行select语句 主服务器数量大于等于host服务器数量时必须设置True
database['break']=0 #断线重连次数,0表示不重连。 注:cli模式下 10秒进行一次重连并且连接次数是当前配置的300倍
```
####方法配置
我们可以调用mysql方法动态配置数据库连接信息,例如:
```__init__.py
mysql("table").connect({
'host':['127.0.0.1'],
'db':['cli']
}).find()
```
实际应用中,我们应当尽量避免把数据库配置信息写在代码中,而应该统一定义在配置文件,我们可以在数据库配置文件中增加额外的配置参数,例如:
```__init__.py
import copy
database1=copy.deepcopy(config.database)
database1['type']='mysql'
database1['host']=['192.168.1.101']
database1['port']=[3306]
database1['user']=['root']
database1['password']=['root']
database1['db']=['test1']
database2=copy.deepcopy(config.database)
database2['type']='mysql'
database2['host']=['192.168.1.102']
database2['port']=[3306]
database2['user']=['root']
database2['password']=['root']
database2['db']=['test2']
```
然后需要动态链接的时候使用下面的方式
```
mysql("table").connect(config.database1).find() 或 mysql("table",config.database1).find()
mysql("table").connect(config.database2).find() 或 mysql("table",config.database2).find()
```