Commit 915e5068 by aa.gusti

perbaikan initializedb sqlalchemy 2.0

1 parent 1279c7b2
...@@ -11,7 +11,6 @@ from opensipkd.models import ( ...@@ -11,7 +11,6 @@ from opensipkd.models import (
User, Route, Eselon, Jabatan, ResProvinsi, ResDati2, ResKecamatan, ResDesa, User, Route, Eselon, Jabatan, ResProvinsi, ResDati2, ResKecamatan, ResDesa,
Menus, Pangkat) Menus, Pangkat)
from opensipkd.models.handlers import LogDBSession from opensipkd.models.handlers import LogDBSession
from opensipkd.tools import get_ext
from pyramid.paster import (get_appsettings, setup_logging, ) from pyramid.paster import (get_appsettings, setup_logging, )
from sqlalchemy import (engine_from_config, select, Table, inspect) from sqlalchemy import (engine_from_config, select, Table, inspect)
from sqlalchemy import text from sqlalchemy import text
...@@ -20,6 +19,8 @@ from sqlalchemy.schema import CreateSchema ...@@ -20,6 +19,8 @@ from sqlalchemy.schema import CreateSchema
from sqlalchemy.sql.sqltypes import BOOLEAN from sqlalchemy.sql.sqltypes import BOOLEAN
from ziggurat_foundations.models.services.user import UserService from ziggurat_foundations.models.services.user import UserService
from opensipkd.tools import get_ext
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -61,6 +62,7 @@ def get_file(filename): ...@@ -61,6 +62,7 @@ def get_file(filename):
def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession): def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
eng = db_session.get_bind()
q = db_session.query(table) q = db_session.query(table)
if q.first(): if q.first():
return return
...@@ -96,7 +98,9 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession): ...@@ -96,7 +98,9 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
# foreign_table, foreign_field = t[1].split('.') # foreign_table, foreign_field = t[1].split('.')
foreign_table = Table(foreign_table, Base.metadata, foreign_table = Table(foreign_table, Base.metadata,
autoload=True, schema=schema) # autoload=True,
autoload_with=eng,
schema=schema)
foreign_field = getattr(foreign_table.c, foreign_field) foreign_field = getattr(foreign_table.c, foreign_field)
foreigns[fieldname] = (foreign_table, foreign_field) foreigns[fieldname] = (foreign_table, foreign_field)
fmap[fieldname] = fname_orig fmap[fieldname] = fname_orig
...@@ -106,8 +110,14 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession): ...@@ -106,8 +110,14 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
if fieldname in foreigns: if fieldname in foreigns:
foreign_table, foreign_field = foreigns[fieldname] foreign_table, foreign_field = foreigns[fieldname]
value = cf[fieldname] value = cf[fieldname]
sql = select([foreign_table]).where(foreign_field == value) # merubah v1.4 ke v.2
q = Base.metadata.bind.execute(sql) # sql = select([foreign_table]).where(foreign_field == value)
sql = select(foreign_table).where(foreign_field == value)
# merubah v1.4 ke v.2
# q = Base.metadata.bind.execute(sql)
with eng.connect() as conn:
q = conn.execute(sql)
ft = q.fetchone() ft = q.fetchone()
val = ft and ft.id or None val = ft and ft.id or None
fieldname = fmap[fieldname] fieldname = fmap[fieldname]
...@@ -140,12 +150,14 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession): ...@@ -140,12 +150,14 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
# sperti salah route url asalkan kode msh sama # sperti salah route url asalkan kode msh sama
def append_csv(table, filename, keys, get_file_func=get_file, def append_csv(table, filename, keys, get_file_func=get_file,
db_session=DBSession, **args): db_session=DBSession, **args):
eng = db_session.get_bind()
update_exist = args.get("update_exist") update_exist = args.get("update_exist")
callback = args.get("callback") callback = args.get("callback")
delimiter = args.get("delimiter") delimiter = args.get("delimiter")
ext = get_ext(filename).lower() ext = get_ext(filename).lower()
log.debug(f"Extension: {ext.strip()}") log.debug(f"Extension: {ext.strip()}")
log.debug(f"Extension: {ext.strip()=='.tsv'}") log.debug(f"Extension: {ext.strip() == '.tsv'}")
if not delimiter: if not delimiter:
delimiter = "," delimiter = ","
if ext.strip() == '.tsv': if ext.strip() == '.tsv':
...@@ -191,7 +203,9 @@ def append_csv(table, filename, keys, get_file_func=get_file, ...@@ -191,7 +203,9 @@ def append_csv(table, filename, keys, get_file_func=get_file,
foreign_field = t_array[2] foreign_field = t_array[2]
foreign_table = Table(foreign_table, Base.metadata, foreign_table = Table(foreign_table, Base.metadata,
autoload=True, schema=schema) # autoload=True, # merubah v1.4 ke v.2
autoload_with=eng,
schema=schema)
foreign_field = getattr(foreign_table.c, foreign_field) foreign_field = getattr(foreign_table.c, foreign_field)
foreigns[fname] = (foreign_table, foreign_field) foreigns[fname] = (foreign_table, foreign_field)
...@@ -209,11 +223,14 @@ def append_csv(table, filename, keys, get_file_func=get_file, ...@@ -209,11 +223,14 @@ def append_csv(table, filename, keys, get_file_func=get_file,
value = callback("mapping", table=foreign_table, field=foreign_field, value = callback("mapping", table=foreign_table, field=foreign_field,
value=value) value=value)
sql = select([foreign_table]).where(foreign_field == value) # merubah v1.4 ke v.2
# sql = select([foreign_table]).where(foreign_field == value)
sql = select(foreign_table).where(foreign_field == value)
log.debug(f"Query Foreignkey: {str(sql)}") log.debug(f"Query Foreignkey: {str(sql)}")
# connection = DBSession.connection() # merubah v1.4 ke v.2
q = Base.metadata.bind.execute(sql) # q = Base.metadata.bind.execute(sql)
# q = connection.execute(sql) with eng.connect() as conn:
q = conn.execute(sql)
row = q.fetchone() row = q.fetchone()
value = row and row.id or None value = row and row.id or None
q.close() q.close()
...@@ -254,8 +271,9 @@ def append_csv(table, filename, keys, get_file_func=get_file, ...@@ -254,8 +271,9 @@ def append_csv(table, filename, keys, get_file_func=get_file,
# Penambahan checking field nullable false wajib ada datanya 2024-09-05 # Penambahan checking field nullable false wajib ada datanya 2024-09-05
for c in columns_table: for c in columns_table:
if (not c["nullable"] and c["name"] not in data and c["name"] != "id"): if (not c["nullable"] and c["name"] not in data and c["name"] != "id"):
raise Exception(f"Table {str(table.__name__)} Field '{c['name']}' wajib ada {c['type']} ") raise Exception(
f"Table {str(table.__name__)} Field '{c['name']}' wajib ada {c['type']} ")
db_session.add(row) db_session.add(row)
db_session.flush() db_session.flush()
......
sqlalchemy~=1.4.22
pyramid~=2.0
colander~=1.8.3
deform~=2.0.15
transaction~=3.0.1
colorama~=0.4.4
Pillow>=9.1.1
lxml>=4.9.0
beautifulsoup4>=4.11.1
soupsieve>=2.3.2.post1
pip~=22.3.1
wheel~=0.38.4
rsa>=4.8
pyasn1~=0.4.8
Chameleon>=3.10.1
six~=1.16.0
Mako>=1.2.0
Babel~=2.11.0
Beaker~=1.11.0
Pygments>=2.12.0
MarkupSafe>=2.1.1
Genshi~=0.7.5
pytz>=2022.1
WebOb~=1.8.7
translationstring~=1.4
peppercorn~=0.6
iso8601>=1.0.2
google~=3.0.0
cachetools>=5.2.0
certifi~=2022.9.24
urllib3~=1.26.6
requests>=2.28.0
google-api-python-client>=2.51.0
python-dateutil~=2.8.2
alembic>=1.8.0
passlib~=1.7.4
venusian~=3.0.0
plaster~=1.0
hupper~=1.10.3
waitress>=2.1.2
greenlet~=2.0.1
pyparsing>=3.0.9
httplib2>=0.20.4
icecream~=2.1.1
executing~=1.2.0
paginate~=0.5.6
idna~=3.2
asttokens~=2.1.0
setuptools>=57.4.0
uritemplate>=4.1.1
reportlab~=3.6.1
PyJWT>=2.4.0
py~=1.11.0
attrs~=22.1.0
pytest~=7.2.0
pluggy~=1.0.0
iniconfig~=1.1.1
cffi>=1.15.0
cryptography>=37.0.2
jwt>=1.3.1
pikepdf>=5.1.5
packaging>=21.3
pycparser>=2.21
pyramid_rpc
zipp~=3.8.0
papyrus~=2.4
geojson~=2.5.0
pybind11~=2.9.2
qrcode~=7.3.1
exceptiongroup~=1.0.4
Shapely~=1.8.5.post1
GeoAlchemy~=0.7.2
tandur~=0.0.1b0
\ No newline at end of file \ No newline at end of file
...@@ -13,7 +13,7 @@ version = line.split()[0] ...@@ -13,7 +13,7 @@ version = line.split()[0]
requires = [ requires = [
'sqlalchemy', 'sqlalchemy',
'wheel', 'wheel',
'colander==1.8.3', 'colander',
'pyramid', 'pyramid',
'pyramid_tm', 'pyramid_tm',
"pyramid_beaker", "pyramid_beaker",
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!