Skip to content

Commit 4b755b2

Browse files
author
Vien
committed
first release
0 parents  commit 4b755b2

File tree

3 files changed

+444
-0
lines changed

3 files changed

+444
-0
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.DS_Store
2+
*/.DS_Store
3+
.idea
4+
*.pyc

README.md

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
- Program : MySQL db helper
2+
- Author : Vien
3+
- History
4+
- first release, support py2&py3 2017/09/05 Vien
5+
6+
## Class
7+
**Constructor**
8+
```
9+
def __init__(self, host, user, passwd, schema, charset='utf8mb4',
10+
autocommit=True, mincached=1, maxcached=5, maxshared=5)
11+
```
12+
sample 1 :
13+
14+
```
15+
db_conf = {
16+
'user' : 'root',
17+
'passwd' : 'moma',
18+
'host' : '127.0.0.1',
19+
'schema' : 'dbname',
20+
'charset' : 'utf8mb4',
21+
'mincached' : 1,
22+
'maxcached' : 3,
23+
'maxshared' : 3,
24+
}
25+
with DBHelper(**db_conf) as db:
26+
db.execute(" select 1 ")
27+
```
28+
29+
sample 2:
30+
31+
```
32+
db = DBHelper('127.0.0.1', 'root', 'moma', 'dbname')
33+
db.execute(" select 1 ")
34+
db.close()
35+
```
36+
37+
> If u not use `with ... as ...` , u need to call close().
38+
39+
40+
41+
## Function
42+
43+
**get_last_sql(self)**
44+
45+
- 获取当前cursor执行的最后一条sql
46+
47+
**get_rowcount(self)**
48+
49+
- 获取当前cursor执行的最后一条sql的影响行数
50+
51+
**begin(self) & end(self)**
52+
53+
- 管理事务(默认情况下是自动管理事务)
54+
55+
```
56+
with DBHelper(**db_conf) as db:
57+
db.begin() # 开启事务
58+
db.execute(sql)
59+
db.execute_batch(sql)
60+
db.insert_batch(sql)
61+
db.end() # 关闭事务,这里一定要记得关闭操作,关闭操作包括提交事务和还原成自动管理事务
62+
```
63+
64+
**use_schema(self, schema)**
65+
66+
- 切换数据库
67+
- 其中schema是数据库名称
68+
69+
**get_last_id(self, table, pri='id')**
70+
71+
- 获取table最后一个主键的值
72+
- 其中pri是主键名称,默认为id
73+
74+
**show_variable(self, var_name)**
75+
76+
- 获取数据库参数配置
77+
78+
- var_name是变量名,例如
79+
80+
```
81+
show_variable('max_allowed_packet') # 获取传送数据包最大值
82+
```
83+
84+
**get_dicts(self, sql, params=None, convert=True)**
85+
86+
- 返回一个字典型(key-value,也就是字段名和值的组合)的list
87+
- params是参数,可以是单个值,也可以是tuple或者list
88+
- convert是是否转为list,默认为list,设置False会以tuple形式返回
89+
90+
**get_values(self, sql, params=None, convert=True)**
91+
92+
- 返回一个结果集list(不包括字段名称)
93+
- params是参数,可以是单个值,也可以是tuple或者list
94+
- convert是是否转为list,默认为list,设置False会以tuple形式返回
95+
96+
**execute(self, sql, params=None)**
97+
98+
- 执行一条sql
99+
- params是参数,可以是单个值,也可以是tuple或者list
100+
101+
**execute_batch(self, sql, params, step_size=2000)**
102+
103+
- 批量执行sql
104+
- params是参数,可以是tuple或者list
105+
- step_size是一次执行数量,默认2000
106+
107+
**insert_batch(self, sql, params, step_size=2000)**
108+
109+
- 批量插入
110+
- params是参数,可以是tuple或者list
111+
- step_size是一次执行数量,默认2000,如果一条记录很大,请不要将此参数设置过大,超过max_allowed_packet的大小可能会出问题
112+
113+
**create_table_like(self, target, origin)**
114+
115+
- 复制表(仅复制结构)
116+
- target是新表的名字,origin是所要复制的表的名字
117+
118+
**load_data_infile(self, path, table, ignore_row=0, local=False, fields_terminated=',', enclosed='"',
119+
lines_terminated='\\n', ignore=True
120+
)**
121+
122+
- 从文件导入数据到表中
123+
- 需要传入文件路径path和表名table,这两项是必须的
124+
- 其他参数可选,分别是忽略的行数ignore_row,默认0,对有标头的表格可以忽略一行
125+
- local参数是选择文件导入的位置是从mysql服务所在的主机还是从本机,默认False是与mysql服务同一主机的文件
126+
- fields_terminated,enclosed,lines_terminated是几种分割换行字符,提供默认值
127+
- ignore是选择是否插入重复数据,默认忽略重复数据
128+
129+
**select_data_outfile(self, sql, path, fields_terminated=',', enclosed='"',
130+
lines_terminated='\\n')**
131+
132+
- 从表查找数据导出到文件
133+
- 其中sql和path是必须的参数,分别是查询sql以及文件存放路径,如果已存在同名文件会失败。
134+
- 后面三项是分割换行字符,提供默认值
135+
136+
**get_fields(self, table, no_pri=False)**
137+
138+
- 获取table的字段名
139+
- no_pri是是否包含主键信息,默认返回,设置True为忽略主键
140+
141+
**get_fields_and_types(self, table, no_pri=False)**
142+
143+
- 获取table的字段名和类型
144+
- no_pri是是否包含主键信息,默认返回,设置True为忽略主键
145+
146+
**get_fields_types_lens(self, table, no_pri=False)**
147+
148+
- 获取table的字段名、类型和长度
149+
- no_pri是是否包含主键信息,默认返回,设置True为忽略主键
150+
151+
**show_create_table(self, table)**
152+
153+
- 获取table的建表语句

0 commit comments

Comments
 (0)