FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
datajoint-python/datajoint/admin.py at master · MMathisLab/datajoint-python · GitHub
MMathisLab
datajoint-python
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
datajoint-python
/
datajoint
/
admin.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
65 lines (55 loc) · 2.48 KB
Breadcrumbs
datajoint-python
/
datajoint
/
admin.py
Copy path
File metadata and controls
65 lines (55 loc) · 2.48 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import
pymysql
from
getpass
import
getpass
from
.
connection
import
conn
from
.
settings
import
config
from
.
utils
import
user_choice
def
set_password
(
new_password
=
None
,
connection
=
None
,
update_config
=
None
):
# pragma: no cover
connection
=
conn
()
if
connection
is
None
else
connection
if
new_password
is
None
:
new_password
=
getpass
(
'New password: '
)
confirm_password
=
getpass
(
'Confirm password: '
)
if
new_password
!=
confirm_password
:
print
(
'Failed to confirm the password! Aborting password change.'
)
return
connection
.
query
(
"SET PASSWORD = PASSWORD('%s')"
%
new_password
)
print
(
'Password updated.'
)
if
update_config
or
(
update_config
is
None
and
user_choice
(
'Update local setting?'
)
==
'yes'
):
config
[
'database.password'
]
=
new_password
config
.
save_local
(
verbose
=
True
)
def
kill
(
restriction
=
None
,
connection
=
None
):
# pragma: no cover
"""
view and kill database connections.
:param restriction: restriction to be applied to processlist
:param connection: a datajoint.Connection object. Default calls datajoint.conn()
Restrictions are specified as strings and can involve any of the attributes of
information_schema.processlist: ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO.
Examples:
dj.kill('HOST LIKE "%compute%"') lists only connections from hosts containing "compute".
dj.kill('TIME > 600') lists only connections older than 10 minutes.
"""
if
connection
is
None
:
connection
=
conn
()
query
=
'SELECT * FROM information_schema.processlist WHERE id <> CONNECTION_ID()'
+
(
""
if
restriction
is
None
else
' AND (%s)'
%
restriction
)
while
True
:
print
(
' ID USER STATE TIME INFO'
)
print
(
'+--+ +----------+ +-----------+ +--+'
)
cur
=
connection
.
query
(
query
,
as_dict
=
True
)
for
process
in
cur
:
try
:
print
(
'{ID:>4d} {USER:<12s} {STATE:<12s} {TIME:>5d} {INFO}'
.
format
(
**
process
))
except
TypeError
:
print
(
process
)
response
=
input
(
'process to kill or "q" to quit > '
)
if
response
==
'q'
:
break
if
response
:
try
:
pid
=
int
(
response
)
except
ValueError
:
pass
# ignore non-numeric input
else
:
try
:
connection
.
query
(
'kill %d'
%
pid
)
except
pymysql
.
err
.
InternalError
:
print
(
'Process not found'
)
Back
|
FazBrowse Home
|
New Git URL