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.
Files changed (29) hide show
  1. {remote_run_everything-1.8 → remote_run_everything-1.9}/PKG-INFO +3 -1
  2. remote_run_everything-1.9/remote_run_everything/__init__.py +6 -0
  3. remote_run_everything-1.9/remote_run_everything/crud/crud.py +45 -0
  4. remote_run_everything-1.9/remote_run_everything/crud/sqlacodegen_go_struct.py +109 -0
  5. remote_run_everything-1.9/remote_run_everything/deploy/__init__.py +0 -0
  6. remote_run_everything-1.9/remote_run_everything/deploy/__scripts__/__init__.py +0 -0
  7. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/by_http.py +1 -1
  8. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/local.py +1 -1
  9. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/remote.py +1 -1
  10. {remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/PKG-INFO +4 -2
  11. remote_run_everything-1.9/remote_run_everything.egg-info/SOURCES.txt +24 -0
  12. remote_run_everything-1.9/remote_run_everything.egg-info/requires.txt +2 -0
  13. {remote_run_everything-1.8 → remote_run_everything-1.9}/setup.py +2 -1
  14. remote_run_everything-1.9/test/test_pg.py +22 -0
  15. remote_run_everything-1.8/remote_run_everything/__init__.py +0 -5
  16. remote_run_everything-1.8/remote_run_everything.egg-info/SOURCES.txt +0 -19
  17. remote_run_everything-1.8/remote_run_everything.egg-info/requires.txt +0 -1
  18. {remote_run_everything-1.8 → remote_run_everything-1.9}/MANIFEST.in +0 -0
  19. {remote_run_everything-1.8 → remote_run_everything-1.9}/README.md +0 -0
  20. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/__scripts__/kill_ps.py +0 -0
  21. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/__scripts__/kill_ss.py +0 -0
  22. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/__scripts__/mongo_dump_restore.py +0 -0
  23. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/conf.py +0 -0
  24. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/down.py +0 -0
  25. {remote_run_everything-1.8/remote_run_everything → remote_run_everything-1.9/remote_run_everything/deploy}/hist_pickle.py +0 -0
  26. {remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/dependency_links.txt +0 -0
  27. {remote_run_everything-1.8 → remote_run_everything-1.9}/remote_run_everything.egg-info/top_level.txt +0 -0
  28. {remote_run_everything-1.8 → remote_run_everything-1.9}/setup.cfg +0 -0
  29. {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.8
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()
@@ -2,7 +2,7 @@ import base64
2
2
  import glob
3
3
  import os
4
4
 
5
- from remote_run_everything.hist_pickle import Hist
5
+ from remote_run_everything.deploy.hist_pickle import Hist
6
6
 
7
7
 
8
8
  class ByHttp:
@@ -1,5 +1,5 @@
1
1
  import os
2
- from remote_run_everything.remote import Remote
2
+ from remote_run_everything.deploy.remote import Remote
3
3
 
4
4
 
5
5
  class Local:
@@ -2,7 +2,7 @@ import os
2
2
 
3
3
  import pysftp
4
4
 
5
- from remote_run_everything.hist_pickle import Hist
5
+ from remote_run_everything.deploy.hist_pickle import Hist
6
6
 
7
7
 
8
8
  class Remote:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
- Name: remote-run-everything
3
- Version: 1.8
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
@@ -0,0 +1,2 @@
1
+ pysftp
2
+ sqlalchemy
@@ -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.8',
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,5 +0,0 @@
1
- from remote_run_everything.conf import Conf
2
- from remote_run_everything.local import Local
3
- from remote_run_everything.remote import Remote
4
- from remote_run_everything.down import Down
5
- from remote_run_everything.by_http import ByHttp
@@ -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