Я хочу передать дескриптор базы данных из моего perl сценария в мой python сценарий - PullRequest
0 голосов
/ 08 января 2020

Я хочу передать дескриптор базы данных из моего perl сценария в мой python сценарий. Я хочу убедиться, что сценарий python выполняется в том же сеансе, что и perl.

Я уже пробовал это сделать -

Perl оболочка для вызова Python подпрограмма при прохождении DB Handle. Не работает, передаю ли я дескриптор как dbh или $ dbh Option1

# ----------------------------------------------------------------- #
# # Connect to MIDB schema and get connection handle
# # ----------------------------------------------------------------- #
my $dbh = ConnDb::connect_to_midb(); 
#
# ----------------------------------------------------------------- #
# # Call Python subroutine b
# ----------------------------------------------------------------- #
py_eval(<<'END');
from test_phy import b
b(dbh)
END

$ perl c_pl
Traceback (most recent call last):
  File "<string>", line 2, in <module>
NameError: name 'dbh' is not defined
Error -- py_eval raised an exception at c_pl line 29.

Option2
# ----------------------------------------------------------------- #
# # Connect to MIDB schema and get connection handle
# # ----------------------------------------------------------------- #
my $dbh = MiDb::connect_to_midb();
#
# ----------------------------------------------------------------- #
# # Import python subroutine b
# ----------------------------------------------------------------- #
#
py_eval(<<'END');
from test_phy import b
END

# ----------------------------------------------------------------- #
# Call Python subroutine.
# ----------------------------------------------------------------- #
py_bind_func("main::Bar", "__main__", "b($dbh)");
print "The meaning of life is: ", Bar(), "\n";

$ perl a_pl
'b(DBI::db=HASH(0x23e6870))' is not a callable object at (eval 20) line 3.

1 Ответ

1 голос
/ 09 января 2020

В идеале, вы не должны передавать дескриптор БД другому процессу. Выполните операцию, затем закройте соединение и откройте, когда вам это нужно во 2-м процессе. Не говоря уже о переходе от Perl к python, что не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...