jxORM 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jxorm-0.1.0/LICENSE +12 -0
- jxorm-0.1.0/PKG-INFO +162 -0
- jxorm-0.1.0/README.md +145 -0
- jxorm-0.1.0/jxORM/__init__.py +10 -0
- jxorm-0.1.0/jxORM/orm/__init__.py +5 -0
- jxorm-0.1.0/jxORM/orm/common.py +426 -0
- jxorm-0.1.0/jxORM/orm/jxUtils.py +399 -0
- jxorm-0.1.0/jxORM/orm/orm.py +421 -0
- jxorm-0.1.0/jxORM/orm/query.py +462 -0
- jxorm-0.1.0/jxORM.egg-info/PKG-INFO +162 -0
- jxorm-0.1.0/jxORM.egg-info/SOURCES.txt +14 -0
- jxorm-0.1.0/jxORM.egg-info/dependency_links.txt +1 -0
- jxorm-0.1.0/jxORM.egg-info/requires.txt +3 -0
- jxorm-0.1.0/jxORM.egg-info/top_level.txt +1 -0
- jxorm-0.1.0/setup.cfg +4 -0
- jxorm-0.1.0/setup.py +173 -0
jxorm-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Licensing
|
|
2
|
+
|
|
3
|
+
The MIT License
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2018
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
8
|
+
|
|
9
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
12
|
+
|
jxorm-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: jxORM
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: jxORM是配套jxWebUI使用的数据库操作库
|
|
5
|
+
Home-page: https://blog.csdn.net/jxandrew/article/details/148670848
|
|
6
|
+
Author: 徐晓轶
|
|
7
|
+
Author-email: andrew@pythonpi.top
|
|
8
|
+
Requires-Python: >=3.8
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: DBUtils
|
|
12
|
+
Requires-Dist: pytz
|
|
13
|
+
Requires-Dist: PyMySQL
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
jxORM是配套jxWebUI使用的数据库操作库。
|
|
18
|
+
|
|
19
|
+
### 使用说明
|
|
20
|
+
|
|
21
|
+
jxORM的使用非常简单,主要包括几个步骤:
|
|
22
|
+
|
|
23
|
+
1、导入依赖
|
|
24
|
+
|
|
25
|
+
from jxORM import jxORMLogger, ORM, DBDataType, ColType, jxDB
|
|
26
|
+
|
|
27
|
+
2、设置数据库连接
|
|
28
|
+
|
|
29
|
+
#用默认设置,设置本地的mysql数据库连接
|
|
30
|
+
jxDB.set('testDB', password='password')
|
|
31
|
+
|
|
32
|
+
目前,jxORM支持mysql和sqlite两种数据库。
|
|
33
|
+
|
|
34
|
+
3、定义一个类,然后用ORM进行修饰,以表明其是一个jxORM数据类
|
|
35
|
+
|
|
36
|
+
@ORM
|
|
37
|
+
class User:
|
|
38
|
+
ID:DBDataType.Long = ColType.PrimaryKey
|
|
39
|
+
CreateTime:DBDataType.DataTime = 1
|
|
40
|
+
Nameame:DBDataType.Chars = 2
|
|
41
|
+
Type:DBDataType.Chars = 2
|
|
42
|
+
Info:DBDataType.Json
|
|
43
|
+
|
|
44
|
+
上述代码定义了一个数据类也是同名的数据表【User】,其属性如下:
|
|
45
|
+
|
|
46
|
+
| 名称 | 类型 | 说明 |
|
|
47
|
+
|------------|----------|-------------|
|
|
48
|
+
| ID | Long | 主键 |
|
|
49
|
+
| CreateTime | DataTime | 索引1 |
|
|
50
|
+
| Name | 字符串 | 联合索引2 |
|
|
51
|
+
| Type | 字符串 | 联合索引2 |
|
|
52
|
+
| Info | json | json格式的附属数据 |
|
|
53
|
+
|
|
54
|
+
4、在数据库中创建数据表
|
|
55
|
+
|
|
56
|
+
在操作数据前需要先获得数据库连接对象:db。在jxWebUI中,每个事件响应函数在调用时会自动获取到db,我们可以直接使用:
|
|
57
|
+
|
|
58
|
+
User.create(db)
|
|
59
|
+
|
|
60
|
+
这条语句会在数据库中创建一个名为【user】的表,其建表语句如下:
|
|
61
|
+
|
|
62
|
+
CREATE TABLE `User` (
|
|
63
|
+
`ID` bigint NOT NULL,
|
|
64
|
+
`CreateTime` datetime NOT NULL,
|
|
65
|
+
`Name` varchar(126) NOT NULL,
|
|
66
|
+
`Type` varchar(126) NOT NULL,
|
|
67
|
+
`Info` mediumtext NOT NULL,
|
|
68
|
+
PRIMARY KEY (`ID`),
|
|
69
|
+
KEY `User_index_1` (`CreateTime`),
|
|
70
|
+
KEY `User_index_2` (`Name`,`Type`)
|
|
71
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
72
|
+
|
|
73
|
+
如果数据库中已经存在名为【User】的表,那么会在日志中记录表已经存在,但不会影响后继的执行。
|
|
74
|
+
|
|
75
|
+
5、插入数据
|
|
76
|
+
|
|
77
|
+
user = User()
|
|
78
|
+
user.Name = 'admin'
|
|
79
|
+
user.Type = 'admin'
|
|
80
|
+
user.Info = {'name': 'admin', 'pwd': '123456'}
|
|
81
|
+
user.insert(db)
|
|
82
|
+
|
|
83
|
+
则会在表User中插入一条记录。ID、CreateTime会自动生成。
|
|
84
|
+
|
|
85
|
+
6、修改数据
|
|
86
|
+
|
|
87
|
+
user.Name = 'test'
|
|
88
|
+
user.Type = 'normal'
|
|
89
|
+
user.update(db)
|
|
90
|
+
|
|
91
|
+
7、查询数据
|
|
92
|
+
|
|
93
|
+
u = User.Get(db, 'Name == "admin"‘)
|
|
94
|
+
|
|
95
|
+
如果只执行了5而未执行6,则返回前面创建的admin用户。如果已经执行了6,则返回None。
|
|
96
|
+
|
|
97
|
+
查询数据有多种方式以适应不同的查询需求,具体请参考【查询数据】。
|
|
98
|
+
|
|
99
|
+
<font color=red size=3>注:</font>jxORM不支持删除,一般通过设置一个bool型属性来实现逻辑删除
|
|
100
|
+
|
|
101
|
+
### 扩展数据
|
|
102
|
+
|
|
103
|
+
经常会遇到新需求需要扩展原有的数据表。jxORM提供了非常简便的扩展数据的方法:继承性扩展:
|
|
104
|
+
|
|
105
|
+
@ORM
|
|
106
|
+
class User2(User):
|
|
107
|
+
ID:DBDataType.Long = ColType.PrimaryKey
|
|
108
|
+
State:DBDataType.Chars = 1
|
|
109
|
+
Noused:DBDataType.Bool
|
|
110
|
+
User2.create(db)
|
|
111
|
+
|
|
112
|
+
这就创建了一个新的数据表和数据类:User2。对于数据类User2来说,其具有User类的所有属性,同时还具有新的属性:State和Noused。
|
|
113
|
+
|
|
114
|
+
u = User2()
|
|
115
|
+
u.Name = 'test2'
|
|
116
|
+
u.Type = 'xxxxxxxxx'
|
|
117
|
+
u.State = 'ok'
|
|
118
|
+
u.Info = {'a':1, 'b':2}
|
|
119
|
+
u.insert(db)
|
|
120
|
+
|
|
121
|
+
而User2数据表的建表语句如下:
|
|
122
|
+
|
|
123
|
+
CREATE TABLE `User2` (
|
|
124
|
+
`ID` bigint NOT NULL,
|
|
125
|
+
`State` varchar(126) NOT NULL,
|
|
126
|
+
`Noused` tinyint NOT NULL,
|
|
127
|
+
PRIMARY KEY (`ID`),
|
|
128
|
+
KEY `User2_index_1` (`State`)
|
|
129
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
130
|
+
|
|
131
|
+
其只有User2类的定义。所以,上述u.insert(db)是将数据分别插入到User和User2表中。jxORM会自动完成相应的处理。
|
|
132
|
+
|
|
133
|
+
同理,update和相关的**类数据查询方法**也会自动完成具有继承关系的数据类所对应的数据表之间的关联。
|
|
134
|
+
|
|
135
|
+
<font color=red size=3>注:</font>具有继承关系的数据表必须定义Long型的ID属性为主键,而且所有子类也都必须如此,否则jxORM无法完成关联。
|
|
136
|
+
|
|
137
|
+
这种方式的最大好处是在扩展数据后,原本使用User的老代码,不受任何影响【如,原本修改User表新增字段的方式,如果新增字段定义为NOT NULL,老代码插入数据时就会因无法插入而崩溃】。新的代码则使用User2即可。
|
|
138
|
+
|
|
139
|
+
使用了User2的新代码,在查询时由于jxORM会自动关联User和User2表,而老代码只使用了User表,所以老代码插入的数据,新代码无法查询的到。同理,其它通过继承创建了User3、User4的代码也会和User2形成隔离。
|
|
140
|
+
|
|
141
|
+
### 日志
|
|
142
|
+
|
|
143
|
+
引用jxORM后,会在当前目录下的logs子目录【没有则会自动创建】中会创建一个日志文件:
|
|
144
|
+
|
|
145
|
+
- jxORM.log:是jxORM的运行日志,会记录所有的数据库操作等
|
|
146
|
+
|
|
147
|
+
日志都是30个日志文件、每个日志文件500M进行循环,所以如长期运行需注意硬盘空间的使用情况。
|
|
148
|
+
|
|
149
|
+
### 安装jxORM
|
|
150
|
+
|
|
151
|
+
pip install jxORM
|
|
152
|
+
|
|
153
|
+
### 接入jxWebUI
|
|
154
|
+
|
|
155
|
+
按下述代码即可将jxORM接入到jxWebUI中:
|
|
156
|
+
|
|
157
|
+
from jxWebUI import jxWebSQLGetDBConnection
|
|
158
|
+
from jxORM import get_default_db
|
|
159
|
+
|
|
160
|
+
jxWebSQLGetDBConnection(get_default_db, is_custom=True)
|
|
161
|
+
|
|
162
|
+
|
jxorm-0.1.0/README.md
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
|
|
2
|
+
jxORM是配套jxWebUI使用的数据库操作库。
|
|
3
|
+
|
|
4
|
+
### 使用说明
|
|
5
|
+
|
|
6
|
+
jxORM的使用非常简单,主要包括几个步骤:
|
|
7
|
+
|
|
8
|
+
1、导入依赖
|
|
9
|
+
|
|
10
|
+
from jxORM import jxORMLogger, ORM, DBDataType, ColType, jxDB
|
|
11
|
+
|
|
12
|
+
2、设置数据库连接
|
|
13
|
+
|
|
14
|
+
#用默认设置,设置本地的mysql数据库连接
|
|
15
|
+
jxDB.set('testDB', password='password')
|
|
16
|
+
|
|
17
|
+
目前,jxORM支持mysql和sqlite两种数据库。
|
|
18
|
+
|
|
19
|
+
3、定义一个类,然后用ORM进行修饰,以表明其是一个jxORM数据类
|
|
20
|
+
|
|
21
|
+
@ORM
|
|
22
|
+
class User:
|
|
23
|
+
ID:DBDataType.Long = ColType.PrimaryKey
|
|
24
|
+
CreateTime:DBDataType.DataTime = 1
|
|
25
|
+
Nameame:DBDataType.Chars = 2
|
|
26
|
+
Type:DBDataType.Chars = 2
|
|
27
|
+
Info:DBDataType.Json
|
|
28
|
+
|
|
29
|
+
上述代码定义了一个数据类也是同名的数据表【User】,其属性如下:
|
|
30
|
+
|
|
31
|
+
| 名称 | 类型 | 说明 |
|
|
32
|
+
|------------|----------|-------------|
|
|
33
|
+
| ID | Long | 主键 |
|
|
34
|
+
| CreateTime | DataTime | 索引1 |
|
|
35
|
+
| Name | 字符串 | 联合索引2 |
|
|
36
|
+
| Type | 字符串 | 联合索引2 |
|
|
37
|
+
| Info | json | json格式的附属数据 |
|
|
38
|
+
|
|
39
|
+
4、在数据库中创建数据表
|
|
40
|
+
|
|
41
|
+
在操作数据前需要先获得数据库连接对象:db。在jxWebUI中,每个事件响应函数在调用时会自动获取到db,我们可以直接使用:
|
|
42
|
+
|
|
43
|
+
User.create(db)
|
|
44
|
+
|
|
45
|
+
这条语句会在数据库中创建一个名为【user】的表,其建表语句如下:
|
|
46
|
+
|
|
47
|
+
CREATE TABLE `User` (
|
|
48
|
+
`ID` bigint NOT NULL,
|
|
49
|
+
`CreateTime` datetime NOT NULL,
|
|
50
|
+
`Name` varchar(126) NOT NULL,
|
|
51
|
+
`Type` varchar(126) NOT NULL,
|
|
52
|
+
`Info` mediumtext NOT NULL,
|
|
53
|
+
PRIMARY KEY (`ID`),
|
|
54
|
+
KEY `User_index_1` (`CreateTime`),
|
|
55
|
+
KEY `User_index_2` (`Name`,`Type`)
|
|
56
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
57
|
+
|
|
58
|
+
如果数据库中已经存在名为【User】的表,那么会在日志中记录表已经存在,但不会影响后继的执行。
|
|
59
|
+
|
|
60
|
+
5、插入数据
|
|
61
|
+
|
|
62
|
+
user = User()
|
|
63
|
+
user.Name = 'admin'
|
|
64
|
+
user.Type = 'admin'
|
|
65
|
+
user.Info = {'name': 'admin', 'pwd': '123456'}
|
|
66
|
+
user.insert(db)
|
|
67
|
+
|
|
68
|
+
则会在表User中插入一条记录。ID、CreateTime会自动生成。
|
|
69
|
+
|
|
70
|
+
6、修改数据
|
|
71
|
+
|
|
72
|
+
user.Name = 'test'
|
|
73
|
+
user.Type = 'normal'
|
|
74
|
+
user.update(db)
|
|
75
|
+
|
|
76
|
+
7、查询数据
|
|
77
|
+
|
|
78
|
+
u = User.Get(db, 'Name == "admin"‘)
|
|
79
|
+
|
|
80
|
+
如果只执行了5而未执行6,则返回前面创建的admin用户。如果已经执行了6,则返回None。
|
|
81
|
+
|
|
82
|
+
查询数据有多种方式以适应不同的查询需求,具体请参考【查询数据】。
|
|
83
|
+
|
|
84
|
+
<font color=red size=3>注:</font>jxORM不支持删除,一般通过设置一个bool型属性来实现逻辑删除
|
|
85
|
+
|
|
86
|
+
### 扩展数据
|
|
87
|
+
|
|
88
|
+
经常会遇到新需求需要扩展原有的数据表。jxORM提供了非常简便的扩展数据的方法:继承性扩展:
|
|
89
|
+
|
|
90
|
+
@ORM
|
|
91
|
+
class User2(User):
|
|
92
|
+
ID:DBDataType.Long = ColType.PrimaryKey
|
|
93
|
+
State:DBDataType.Chars = 1
|
|
94
|
+
Noused:DBDataType.Bool
|
|
95
|
+
User2.create(db)
|
|
96
|
+
|
|
97
|
+
这就创建了一个新的数据表和数据类:User2。对于数据类User2来说,其具有User类的所有属性,同时还具有新的属性:State和Noused。
|
|
98
|
+
|
|
99
|
+
u = User2()
|
|
100
|
+
u.Name = 'test2'
|
|
101
|
+
u.Type = 'xxxxxxxxx'
|
|
102
|
+
u.State = 'ok'
|
|
103
|
+
u.Info = {'a':1, 'b':2}
|
|
104
|
+
u.insert(db)
|
|
105
|
+
|
|
106
|
+
而User2数据表的建表语句如下:
|
|
107
|
+
|
|
108
|
+
CREATE TABLE `User2` (
|
|
109
|
+
`ID` bigint NOT NULL,
|
|
110
|
+
`State` varchar(126) NOT NULL,
|
|
111
|
+
`Noused` tinyint NOT NULL,
|
|
112
|
+
PRIMARY KEY (`ID`),
|
|
113
|
+
KEY `User2_index_1` (`State`)
|
|
114
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
115
|
+
|
|
116
|
+
其只有User2类的定义。所以,上述u.insert(db)是将数据分别插入到User和User2表中。jxORM会自动完成相应的处理。
|
|
117
|
+
|
|
118
|
+
同理,update和相关的**类数据查询方法**也会自动完成具有继承关系的数据类所对应的数据表之间的关联。
|
|
119
|
+
|
|
120
|
+
<font color=red size=3>注:</font>具有继承关系的数据表必须定义Long型的ID属性为主键,而且所有子类也都必须如此,否则jxORM无法完成关联。
|
|
121
|
+
|
|
122
|
+
这种方式的最大好处是在扩展数据后,原本使用User的老代码,不受任何影响【如,原本修改User表新增字段的方式,如果新增字段定义为NOT NULL,老代码插入数据时就会因无法插入而崩溃】。新的代码则使用User2即可。
|
|
123
|
+
|
|
124
|
+
使用了User2的新代码,在查询时由于jxORM会自动关联User和User2表,而老代码只使用了User表,所以老代码插入的数据,新代码无法查询的到。同理,其它通过继承创建了User3、User4的代码也会和User2形成隔离。
|
|
125
|
+
|
|
126
|
+
### 日志
|
|
127
|
+
|
|
128
|
+
引用jxORM后,会在当前目录下的logs子目录【没有则会自动创建】中会创建一个日志文件:
|
|
129
|
+
|
|
130
|
+
- jxORM.log:是jxORM的运行日志,会记录所有的数据库操作等
|
|
131
|
+
|
|
132
|
+
日志都是30个日志文件、每个日志文件500M进行循环,所以如长期运行需注意硬盘空间的使用情况。
|
|
133
|
+
|
|
134
|
+
### 安装jxORM
|
|
135
|
+
|
|
136
|
+
pip install jxORM
|
|
137
|
+
|
|
138
|
+
### 接入jxWebUI
|
|
139
|
+
|
|
140
|
+
按下述代码即可将jxORM接入到jxWebUI中:
|
|
141
|
+
|
|
142
|
+
from jxWebUI import jxWebSQLGetDBConnection
|
|
143
|
+
from jxORM import get_default_db
|
|
144
|
+
|
|
145
|
+
jxWebSQLGetDBConnection(get_default_db, is_custom=True)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
os.makedirs("logs", exist_ok=True)
|
|
5
|
+
|
|
6
|
+
from .orm.jxUtils import set_host_id, logger as jxORMLogger
|
|
7
|
+
from .orm.orm import ORM, get_by_type_id, get_by_type_name, select
|
|
8
|
+
from .orm.common import DBDataType, ColType, jxDB, DBType, set_default_db, get_default_db, get_db, register_create_db
|
|
9
|
+
|
|
10
|
+
__all__ = ['set_host_id', 'jxORMLogger', 'ORM', 'select', 'DBDataType', 'ColType', 'jxDB', 'DBType', 'set_default_db', 'get_default_db', 'get_db', 'register_create_db', ]
|