Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
irul
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 915e5068
authored
Sep 07, 2024
by
aa.gusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perbaikan initializedb sqlalchemy 2.0
1 parent
1279c7b2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
85 deletions
opensipkd/base/scripts/initializedb.py
requirements.txt
setup.py
opensipkd/base/scripts/initializedb.py
View file @
915e506
...
...
@@ -11,7 +11,6 @@ from opensipkd.models import (
User
,
Route
,
Eselon
,
Jabatan
,
ResProvinsi
,
ResDati2
,
ResKecamatan
,
ResDesa
,
Menus
,
Pangkat
)
from
opensipkd.models.handlers
import
LogDBSession
from
opensipkd.tools
import
get_ext
from
pyramid.paster
import
(
get_appsettings
,
setup_logging
,
)
from
sqlalchemy
import
(
engine_from_config
,
select
,
Table
,
inspect
)
from
sqlalchemy
import
text
...
...
@@ -20,6 +19,8 @@ from sqlalchemy.schema import CreateSchema
from
sqlalchemy.sql.sqltypes
import
BOOLEAN
from
ziggurat_foundations.models.services.user
import
UserService
from
opensipkd.tools
import
get_ext
log
=
logging
.
getLogger
(
__name__
)
...
...
@@ -61,6 +62,7 @@ def get_file(filename):
def
restore_csv
(
table
,
filename
,
get_file_func
=
get_file
,
db_session
=
DBSession
):
eng
=
db_session
.
get_bind
()
q
=
db_session
.
query
(
table
)
if
q
.
first
():
return
...
...
@@ -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
=
Table
(
foreign_table
,
Base
.
metadata
,
autoload
=
True
,
schema
=
schema
)
# autoload=True,
autoload_with
=
eng
,
schema
=
schema
)
foreign_field
=
getattr
(
foreign_table
.
c
,
foreign_field
)
foreigns
[
fieldname
]
=
(
foreign_table
,
foreign_field
)
fmap
[
fieldname
]
=
fname_orig
...
...
@@ -106,8 +110,14 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
if
fieldname
in
foreigns
:
foreign_table
,
foreign_field
=
foreigns
[
fieldname
]
value
=
cf
[
fieldname
]
sql
=
select
([
foreign_table
])
.
where
(
foreign_field
==
value
)
q
=
Base
.
metadata
.
bind
.
execute
(
sql
)
# merubah v1.4 ke v.2
# 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
()
val
=
ft
and
ft
.
id
or
None
fieldname
=
fmap
[
fieldname
]
...
...
@@ -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
def
append_csv
(
table
,
filename
,
keys
,
get_file_func
=
get_file
,
db_session
=
DBSession
,
**
args
):
eng
=
db_session
.
get_bind
()
update_exist
=
args
.
get
(
"update_exist"
)
callback
=
args
.
get
(
"callback"
)
delimiter
=
args
.
get
(
"delimiter"
)
ext
=
get_ext
(
filename
)
.
lower
()
log
.
debug
(
f
"Extension: {ext.strip()}"
)
log
.
debug
(
f
"Extension: {ext.strip()
==
'.tsv'}"
)
log
.
debug
(
f
"Extension: {ext.strip()
==
'.tsv'}"
)
if
not
delimiter
:
delimiter
=
","
if
ext
.
strip
()
==
'.tsv'
:
...
...
@@ -191,7 +203,9 @@ def append_csv(table, filename, keys, get_file_func=get_file,
foreign_field
=
t_array
[
2
]
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
)
foreigns
[
fname
]
=
(
foreign_table
,
foreign_field
)
...
...
@@ -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
=
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)}"
)
# connection = DBSession.connection()
q
=
Base
.
metadata
.
bind
.
execute
(
sql
)
# q = connection.execute(sql)
# merubah v1.4 ke v.2
# q = Base.metadata.bind.execute(sql)
with
eng
.
connect
()
as
conn
:
q
=
conn
.
execute
(
sql
)
row
=
q
.
fetchone
()
value
=
row
and
row
.
id
or
None
q
.
close
()
...
...
@@ -255,7 +272,8 @@ def append_csv(table, filename, keys, get_file_func=get_file,
# Penambahan checking field nullable false wajib ada datanya 2024-09-05
for
c
in
columns_table
:
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
.
flush
()
...
...
requirements.txt
View file @
915e506
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
setup.py
View file @
915e506
...
...
@@ -13,7 +13,7 @@ version = line.split()[0]
requires
=
[
'sqlalchemy'
,
'wheel'
,
'colander
==1.8.3
'
,
'colander'
,
'pyramid'
,
'pyramid_tm'
,
"pyramid_beaker"
,
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment