remote-run-everything 2.0.3__tar.gz → 2.0.4__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 (35) hide show
  1. {remote_run_everything-2.0.3/remote_run_everything.egg-info → remote_run_everything-2.0.4}/PKG-INFO +1 -1
  2. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/pyproject.toml +1 -1
  3. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/db/crud_sqlalchemy.py +50 -10
  4. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/tools/common1.py +5 -1
  5. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/tools/sqlacodegen_go_struct.py +5 -1
  6. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4/remote_run_everything.egg-info}/PKG-INFO +1 -1
  7. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/LICENSE +0 -0
  8. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/MANIFEST.in +0 -0
  9. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/README.md +0 -0
  10. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/__init__.py +0 -0
  11. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/db/__init__.py +0 -0
  12. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/db/backup.py +0 -0
  13. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/db/crude_duck.py +0 -0
  14. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/db/kv_store.py +0 -0
  15. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/deploy/__init__.py +0 -0
  16. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/deploy/by_http.py +0 -0
  17. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/deploy/by_http_server.py +0 -0
  18. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/deploy/by_http_tool.py +0 -0
  19. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/deploy/record_mod.py +0 -0
  20. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/nosql/__init__.py +0 -0
  21. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/nosql/no_sql.py +0 -0
  22. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/nosql/no_sql_mysql.py +0 -0
  23. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/nosql/no_sql_pg.py +0 -0
  24. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/nosql/no_sql_tool.py +0 -0
  25. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/tools/__init__.py +0 -0
  26. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/tools/common.py +0 -0
  27. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/tools/decorators.py +0 -0
  28. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/vsconf/conf_txt.py +0 -0
  29. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything/vsconf/core.py +0 -0
  30. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything.egg-info/SOURCES.txt +0 -0
  31. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything.egg-info/dependency_links.txt +0 -0
  32. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/remote_run_everything.egg-info/top_level.txt +0 -0
  33. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/setup.cfg +0 -0
  34. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/test/test.py +0 -0
  35. {remote_run_everything-2.0.3 → remote_run_everything-2.0.4}/test/test_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remote_run_everything
3
- Version: 2.0.3
3
+ Version: 2.0.4
4
4
  Summary: Deploy Tools
5
5
  Author-email: Wang Qi <wangmarkqi@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "remote_run_everything"
3
- version = "2.0.3"
3
+ version = "2.0.4"
4
4
  authors = [
5
5
  { name="Wang Qi", email="wangmarkqi@gmail.com" },
6
6
  ]
@@ -1,10 +1,16 @@
1
1
  import os, pymysql
2
2
  from urllib.parse import quote_plus
3
-
4
- from sqlalchemy import create_engine, select, update, and_, insert, delete
3
+ from sqlalchemy.ext.automap import automap_base
4
+ from sqlalchemy import create_engine, select, update, and_, insert, delete, text
5
5
 
6
6
 
7
7
  class Crud:
8
+ def auto_tab(self, engine):
9
+ Base = automap_base()
10
+ Base.prepare(autoload_with=engine)
11
+ # FinIndi = Base.classes.fin_indi
12
+ return Base.classes
13
+
8
14
  def sqlite_engine(self, dbpath):
9
15
  dir = os.path.dirname(dbpath)
10
16
  os.makedirs(dir, exist_ok=True)
@@ -50,10 +56,11 @@ class Crud:
50
56
  cols = mod.__dict__['__annotations__'].keys()
51
57
  else:
52
58
  cols = [i for i in mod.__dict__.keys() if not i.startswith("__")]
59
+ cols = [i for i in cols if i != '_sa_class_manager']
53
60
  return cols
54
61
 
55
62
  def insert_many(self, engine, mod, l):
56
- if len(l)==0:return
63
+ if len(l) == 0: return
57
64
  cols = self.table_columns(mod)
58
65
  with engine.connect() as conn:
59
66
  for dic in l:
@@ -78,20 +85,53 @@ class Crud:
78
85
  conn.execute(stmt)
79
86
  conn.commit()
80
87
 
88
+ def update(self, engine, mod, cond, dic):
89
+ cols = self.table_columns(mod)
90
+ dic = {k: v for k, v in dic.items() if k in cols}
91
+ with engine.connect() as conn:
92
+ stmt = update(mod).where(cond).values(dic)
93
+ conn.execute(stmt)
94
+ conn.commit()
95
+
96
+ # cond = and_(BdhPrice.date == dic['date'], BdhPrice.goodsName == dic['goodsName'])
97
+ # cond1 = and_(FinIndi.year == '2020')
98
+ # cond2 = or_(FinIndi.year == "2021")
99
+ # cond = or_(cond1, cond2)
81
100
  def upsert(self, engine, mod, cond, dic):
82
- id = self.exist_id(engine, mod, cond)
83
- if id is not None:
84
- self.update_by_id(engine, mod, id, dic)
101
+ exists = self.query_cond(engine, mod, cond)
102
+ if len(exists) > 0:
103
+ self.update(engine, mod, cond, dic)
85
104
  return
86
105
  self.insert_one(engine, mod, dic)
87
106
 
88
107
  def delete_by_id(self, engine, mod, id):
108
+ cond = and_(mod.id == id)
89
109
  with engine.connect() as conn:
90
- stmt = delete(mod).where(mod.id == id)
110
+ stmt = delete(mod).where(cond)
91
111
  conn.execute(stmt)
92
112
  conn.commit()
93
113
 
94
114
  def delete(self, engine, mod, cond):
95
- id = self.exist_id(engine, mod, cond)
96
- if id is not None:
97
- self.delete_by_id(engine, mod, id)
115
+ with engine.connect() as conn:
116
+ stmt = delete(mod).where(cond)
117
+ conn.execute(stmt)
118
+ conn.commit()
119
+
120
+ def query_cond(self, engine, mod, cond):
121
+ mdic = lambda cols, row: {i[0]: i[1] for i in zip(cols, row)}
122
+ with engine.connect() as ses:
123
+ stmt = select(mod).where(cond)
124
+ rows = ses.execute(stmt)
125
+ cols = rows.keys()
126
+ return [mdic(cols, r) for r in rows]
127
+
128
+ def query_sql(self, engine, sql):
129
+ mdic = lambda cols, row: {i[0]: i[1] for i in zip(cols, row)}
130
+ with engine.connect() as ses:
131
+ rows = ses.execute(text(sql))
132
+ cols = rows.keys()
133
+ return [mdic(cols, r) for r in rows]
134
+
135
+ def execute_sql(self, engine, sql):
136
+ with engine.connect() as ses:
137
+ return ses.execute(text(sql))
@@ -1,7 +1,7 @@
1
1
  import jinja2, requests, os
2
2
  import pandas as pd
3
3
  import base64
4
- import os, signal, glob, arrow
4
+ import os, signal, glob, arrow, uuid, hashlib
5
5
 
6
6
 
7
7
  class Common1:
@@ -94,6 +94,10 @@ class Common1:
94
94
  if dif.days > n:
95
95
  os.remove(f)
96
96
 
97
+ def str2uuid(self, s):
98
+ hex_string = hashlib.md5(s.encode("UTF-8")).hexdigest()
99
+ return str(uuid.UUID(hex=hex_string))
100
+
97
101
 
98
102
  if __name__ == '__main__':
99
103
  g = Common1()
@@ -1,6 +1,10 @@
1
1
  import os
2
2
  from dataclasses import dataclass
3
3
 
4
+ '''
5
+ sqlacodegen mssql+pyodbc://sa:a@127.0.0.1:1433/pstarback?driver=ODBC+Driver+17+for+SQL+Server > ./test.py
6
+ '''
7
+
4
8
 
5
9
  @dataclass
6
10
  class Tab:
@@ -105,5 +109,5 @@ class Sql2go:
105
109
 
106
110
 
107
111
  if __name__ == '__main__':
108
- s = SqlRead("./pstarback.py")
112
+ s = Sql2go("./pstarback.py")
109
113
  s.write_go()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remote_run_everything
3
- Version: 2.0.3
3
+ Version: 2.0.4
4
4
  Summary: Deploy Tools
5
5
  Author-email: Wang Qi <wangmarkqi@gmail.com>
6
6
  License-Expression: MIT