remote-run-everything 1.8__tar.gz → 1.9__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.
- {remote_run_everything-1.8 → remote_run_everything-1.9}/PKG-INFO +3 -1
- remote_run_everything-1.9/remote_run_everything/__init__.py +6 -0
- remote_run_everything-1.9/remote_run_everything/crud/crud.py +45 -0
- remote_run_everything-1.9/remote_run_everything/crud/sqlacodegen_go_struct.py +109 -0
- remote_run_everything-1.9/remote_run_everything/deploy/__init__.py +0 -0
- remote_run_everything-1.9/remote_run_everything/deploy/__scripts__/__init__.py +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/by_http.py +1 -1
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/local.py +1 -1
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/remote.py +1 -1
- {remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/PKG-INFO +4 -2
- remote_run_everything-1.9/remote_run_everything.egg-info/SOURCES.txt +24 -0
- remote_run_everything-1.9/remote_run_everything.egg-info/requires.txt +2 -0
- {remote_run_everything-1.8 → remote_run_everything-1.9}/setup.py +2 -1
- remote_run_everything-1.9/test/test_pg.py +22 -0
- remote_run_everything-1.8/remote_run_everything/__init__.py +0 -5
- remote_run_everything-1.8/remote_run_everything.egg-info/SOURCES.txt +0 -19
- remote_run_everything-1.8/remote_run_everything.egg-info/requires.txt +0 -1
- {remote_run_everything-1.8 → remote_run_everything-1.9}/MANIFEST.in +0 -0
- {remote_run_everything-1.8 → remote_run_everything-1.9}/README.md +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/__scripts__/kill_ps.py +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/__scripts__/kill_ss.py +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/__scripts__/mongo_dump_restore.py +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/conf.py +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/down.py +0 -0
- {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/hist_pickle.py +0 -0
- {remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/dependency_links.txt +0 -0
- {remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/top_level.txt +0 -0
- {remote_run_everything-1.8 → remote_run_everything-1.9}/setup.cfg +0 -0
- {remote_run_everything-1.8 → remote_run_everything-1.9}/test/test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: remote_run_everything
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9
|
|
4
4
|
Summary: 远程上传、调试、下载任何语言
|
|
5
5
|
Home-page: https://github.com/wangmarkqi/remote_run_everything
|
|
6
6
|
Author: Wang Qi
|
|
@@ -11,6 +11,8 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Requires-Python: >=3.6
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: pysftp
|
|
15
|
+
Requires-Dist: sqlalchemy
|
|
14
16
|
|
|
15
17
|
# remote_run_everthing统一解决各种语言远程调试
|
|
16
18
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from remote_run_everything.deploy.conf import Conf
|
|
2
|
+
from remote_run_everything.deploy.by_http import ByHttp
|
|
3
|
+
from remote_run_everything.deploy.down import Down
|
|
4
|
+
from remote_run_everything.deploy.local import Local
|
|
5
|
+
from remote_run_everything.deploy.remote import Remote
|
|
6
|
+
from remote_run_everything.crud.crud import Crud
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from sqlalchemy import create_engine, select, update, and_, insert, delete
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Crud:
|
|
5
|
+
def __init__(self, url, mod):
|
|
6
|
+
self.engine = create_engine(url, future=True)
|
|
7
|
+
self.mod = mod
|
|
8
|
+
self.mod.__table__.create(self.engine, checkfirst=True)
|
|
9
|
+
|
|
10
|
+
def exist_id(self, cond):
|
|
11
|
+
with self.engine.connect() as conn:
|
|
12
|
+
stmt = select(self.mod).where(cond).limit(1)
|
|
13
|
+
id = conn.scalar(stmt)
|
|
14
|
+
if id is not None:
|
|
15
|
+
return id
|
|
16
|
+
return None
|
|
17
|
+
|
|
18
|
+
def insert(self, dic):
|
|
19
|
+
with self.engine.connect() as conn:
|
|
20
|
+
stmt = insert(self.mod).values(dic)
|
|
21
|
+
conn.execute(stmt)
|
|
22
|
+
conn.commit()
|
|
23
|
+
|
|
24
|
+
def upsert(self, cond, dic):
|
|
25
|
+
with self.engine.connect() as conn:
|
|
26
|
+
# cond = and_(BdhPrice.date == dic['date'], BdhPrice.goodsName == dic['goodsName'])
|
|
27
|
+
stmt = select(self.mod).where(cond).limit(1)
|
|
28
|
+
id = conn.scalar(stmt)
|
|
29
|
+
if id is not None:
|
|
30
|
+
stmt = update(self.mod).where(self.mod.id == id).values(dic)
|
|
31
|
+
else:
|
|
32
|
+
stmt = insert(self.mod).values(dic)
|
|
33
|
+
conn.execute(stmt)
|
|
34
|
+
conn.commit()
|
|
35
|
+
|
|
36
|
+
def delete(self, cond):
|
|
37
|
+
with self.engine.connect() as conn:
|
|
38
|
+
while True:
|
|
39
|
+
stmt = select(self.mod).where(cond).limit(1)
|
|
40
|
+
id = conn.scalar(stmt)
|
|
41
|
+
if id is None:
|
|
42
|
+
return
|
|
43
|
+
stmt = delete(self.mod).where(self.mod.id == id)
|
|
44
|
+
conn.execute(stmt)
|
|
45
|
+
conn.commit()
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class Tab:
|
|
7
|
+
stname: str
|
|
8
|
+
tbname: str
|
|
9
|
+
fields: list
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SqlRead:
|
|
13
|
+
def __init__(self, path):
|
|
14
|
+
self.path = path
|
|
15
|
+
|
|
16
|
+
def read_lines(self):
|
|
17
|
+
with open(self.path, 'r') as f:
|
|
18
|
+
content = f.readlines()
|
|
19
|
+
return content
|
|
20
|
+
|
|
21
|
+
def replace(self, s, l):
|
|
22
|
+
for i in l:
|
|
23
|
+
s = s.replace(i, "")
|
|
24
|
+
return s
|
|
25
|
+
|
|
26
|
+
def split_cls(self):
|
|
27
|
+
res = []
|
|
28
|
+
content = self.read_lines()
|
|
29
|
+
cur_cls = ""
|
|
30
|
+
t = Tab("", "", [])
|
|
31
|
+
for s in content:
|
|
32
|
+
if s.startswith("class "):
|
|
33
|
+
if cur_cls != "":
|
|
34
|
+
res.append(t)
|
|
35
|
+
t = Tab("", "", [])
|
|
36
|
+
stname = self.replace(s, [" ", "\n", "class", "(Base)", ":"])
|
|
37
|
+
cur_cls = stname
|
|
38
|
+
t.stname = cur_cls
|
|
39
|
+
elif "__tablename__" in s:
|
|
40
|
+
tbname = self.replace(s, [" ", "__tablename__", "\n", "="])
|
|
41
|
+
t.tbname = tbname
|
|
42
|
+
elif "= Column" in s:
|
|
43
|
+
t.fields.append(s)
|
|
44
|
+
for t in res:
|
|
45
|
+
ll = []
|
|
46
|
+
for s in t.fields:
|
|
47
|
+
ll.append({
|
|
48
|
+
"field": self.parse_name(s),
|
|
49
|
+
"tag": self.parse_tag(s),
|
|
50
|
+
"ty": self.parse_ty(s)
|
|
51
|
+
})
|
|
52
|
+
t.fields = ll
|
|
53
|
+
print(res)
|
|
54
|
+
return res
|
|
55
|
+
|
|
56
|
+
def parse_name(self, s):
|
|
57
|
+
name = s.split("=")[0].replace(" ", "")
|
|
58
|
+
return name
|
|
59
|
+
|
|
60
|
+
def parse_ty(self, s):
|
|
61
|
+
if "DateTime" in s:
|
|
62
|
+
ty = "time.time"
|
|
63
|
+
elif "String" in s:
|
|
64
|
+
ty = "string"
|
|
65
|
+
elif "BigInteger" in s:
|
|
66
|
+
ty = "int64"
|
|
67
|
+
elif "Integer" in s or "TINYINT" in s:
|
|
68
|
+
ty = "int32"
|
|
69
|
+
elif "CHAR" in s:
|
|
70
|
+
ty = "string"
|
|
71
|
+
elif "Float" in s or "MONEY" in s:
|
|
72
|
+
ty = "float32"
|
|
73
|
+
elif "DECIMAL" in s:
|
|
74
|
+
ty = "float64"
|
|
75
|
+
else:
|
|
76
|
+
ty = "unk"
|
|
77
|
+
return ty
|
|
78
|
+
|
|
79
|
+
def parse_tag(self, s):
|
|
80
|
+
name = s.split("=")[0].replace(" ", "").lower()
|
|
81
|
+
tag = ""
|
|
82
|
+
if "primary_key=True" in s:
|
|
83
|
+
tag = f'''`xorm:"pk not null '{name}'" json:"{name}"`'''
|
|
84
|
+
elif "nullable=False" in s:
|
|
85
|
+
tag = f'''`xorm:"not null '{name}'" json:"{name}"`'''
|
|
86
|
+
else:
|
|
87
|
+
tag = f'''`xorm:"'{name}'" json:"{name}"`'''
|
|
88
|
+
return tag
|
|
89
|
+
|
|
90
|
+
def write_go(self):
|
|
91
|
+
res = self.split_cls()
|
|
92
|
+
lines = []
|
|
93
|
+
for tab in res:
|
|
94
|
+
header = f"type {tab.stname} struct " + "{"
|
|
95
|
+
st = [header]
|
|
96
|
+
for f in tab.fields:
|
|
97
|
+
ss = f"{f['field']} {f['ty']} {f['tag']}"
|
|
98
|
+
st.append(ss)
|
|
99
|
+
st.append("}" + "\r\n")
|
|
100
|
+
lines.append("\n".join(st))
|
|
101
|
+
ss = "package mod" + "\r\n" + "".join(lines)
|
|
102
|
+
with open("./mod.go", 'w') as f:
|
|
103
|
+
f.write(ss)
|
|
104
|
+
os.system("go fmt mod.go")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
if __name__ == '__main__':
|
|
108
|
+
s = SqlRead("./pstarback.py")
|
|
109
|
+
s.write_go()
|
|
File without changes
|
|
File without changes
|
{remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
|
-
Name:
|
|
3
|
-
Version: 1.
|
|
2
|
+
Name: remote_run_everything
|
|
3
|
+
Version: 1.9
|
|
4
4
|
Summary: 远程上传、调试、下载任何语言
|
|
5
5
|
Home-page: https://github.com/wangmarkqi/remote_run_everything
|
|
6
6
|
Author: Wang Qi
|
|
@@ -11,6 +11,8 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Requires-Python: >=3.6
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: pysftp
|
|
15
|
+
Requires-Dist: sqlalchemy
|
|
14
16
|
|
|
15
17
|
# remote_run_everthing统一解决各种语言远程调试
|
|
16
18
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
MANIFEST.in
|
|
2
|
+
README.md
|
|
3
|
+
setup.py
|
|
4
|
+
remote_run_everything/__init__.py
|
|
5
|
+
remote_run_everything.egg-info/PKG-INFO
|
|
6
|
+
remote_run_everything.egg-info/SOURCES.txt
|
|
7
|
+
remote_run_everything.egg-info/dependency_links.txt
|
|
8
|
+
remote_run_everything.egg-info/requires.txt
|
|
9
|
+
remote_run_everything.egg-info/top_level.txt
|
|
10
|
+
remote_run_everything/crud/crud.py
|
|
11
|
+
remote_run_everything/crud/sqlacodegen_go_struct.py
|
|
12
|
+
remote_run_everything/deploy/__init__.py
|
|
13
|
+
remote_run_everything/deploy/by_http.py
|
|
14
|
+
remote_run_everything/deploy/conf.py
|
|
15
|
+
remote_run_everything/deploy/down.py
|
|
16
|
+
remote_run_everything/deploy/hist_pickle.py
|
|
17
|
+
remote_run_everything/deploy/local.py
|
|
18
|
+
remote_run_everything/deploy/remote.py
|
|
19
|
+
remote_run_everything/deploy/__scripts__/__init__.py
|
|
20
|
+
remote_run_everything/deploy/__scripts__/kill_ps.py
|
|
21
|
+
remote_run_everything/deploy/__scripts__/kill_ss.py
|
|
22
|
+
remote_run_everything/deploy/__scripts__/mongo_dump_restore.py
|
|
23
|
+
test/test.py
|
|
24
|
+
test/test_pg.py
|
|
@@ -7,7 +7,7 @@ with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
|
|
|
7
7
|
long_description = f.read()
|
|
8
8
|
setuptools.setup(
|
|
9
9
|
name='remote_run_everything',
|
|
10
|
-
version='1.
|
|
10
|
+
version='1.9',
|
|
11
11
|
description='远程上传、调试、下载任何语言',
|
|
12
12
|
long_description=long_description,
|
|
13
13
|
long_description_content_type='text/markdown',
|
|
@@ -26,6 +26,7 @@ setuptools.setup(
|
|
|
26
26
|
|
|
27
27
|
install_requires=[
|
|
28
28
|
'pysftp',
|
|
29
|
+
"sqlalchemy"
|
|
29
30
|
],
|
|
30
31
|
|
|
31
32
|
)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from sqlalchemy.orm import declarative_base
|
|
2
|
+
from sqlalchemy import create_engine, Column, String, Integer, and_, DateTime
|
|
3
|
+
from remote_run_everything.crud.crud import Crud
|
|
4
|
+
base = declarative_base()
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Kv(base):
|
|
8
|
+
__tablename__ = "kv"
|
|
9
|
+
id = Column(Integer, primary_key=True)
|
|
10
|
+
k = Column(String(20))
|
|
11
|
+
v = Column(String(20))
|
|
12
|
+
updated = Column(DateTime)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
if __name__ == '__main__':
|
|
16
|
+
url = "postgresql://postgres:iamrich@39.96.40.177:5432/projects"
|
|
17
|
+
crude = Crud(url, Kv)
|
|
18
|
+
cond = and_(Kv.k == "aqa")
|
|
19
|
+
crude.delete(cond)
|
|
20
|
+
crude.upsert(cond, {"k": "aqa", "v": "adsf"})
|
|
21
|
+
crude.upsert(cond, {"k": "aqa", "v": "adsf"})
|
|
22
|
+
crude.insert({"k": "aqa", "v": "adsf"})
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
MANIFEST.in
|
|
2
|
-
README.md
|
|
3
|
-
setup.py
|
|
4
|
-
remote_run_everything/__init__.py
|
|
5
|
-
remote_run_everything/by_http.py
|
|
6
|
-
remote_run_everything/conf.py
|
|
7
|
-
remote_run_everything/down.py
|
|
8
|
-
remote_run_everything/hist_pickle.py
|
|
9
|
-
remote_run_everything/local.py
|
|
10
|
-
remote_run_everything/remote.py
|
|
11
|
-
remote_run_everything.egg-info/PKG-INFO
|
|
12
|
-
remote_run_everything.egg-info/SOURCES.txt
|
|
13
|
-
remote_run_everything.egg-info/dependency_links.txt
|
|
14
|
-
remote_run_everything.egg-info/requires.txt
|
|
15
|
-
remote_run_everything.egg-info/top_level.txt
|
|
16
|
-
remote_run_everything/__scripts__/kill_ps.py
|
|
17
|
-
remote_run_everything/__scripts__/kill_ss.py
|
|
18
|
-
remote_run_everything/__scripts__/mongo_dump_restore.py
|
|
19
|
-
test/test.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
pysftp
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|