0

Postgresql データベースに保存されているテキストがある場合、そのテキストを Python コードとして実行し、同じデータベースを更新する可能性がある方法はありますか?

4

2 に答える 2

1
  1. 恐ろしいですね。
  2. はい

PL/Python は、Python で関数を記述できる postgres の拡張機能です。パッケージ マネージャーから拡張機能をインストールする必要があるか、postgres をインストールしたときに既にバンドルされている可能性があります (これはapt-get install postgresql-plpython-9.1、debian に postgres をインストールした方法によって異なります)。

データベースで拡張機能を有効にするには、まず psql を使用して次を実行します。

CREATE EXTENSION plpythonu

Python で関数を指定できるようになったので、そのコードを実行する関数を次のように記述できます。

CREATE FUNCTION eval_python(code text) RETURNS integer AS $$
    eval(code)
    return 1
$$ LANGUAGE plpythonu;

そして、次のようにすべてcodeのフィールドに対して実行します。my_table

SELECT eval_python(code) FROM my_table;

Pythonからデータベースを操作する方法の詳細については、PL/pythonのドキュメントを参照してください。

于 2013-05-09T20:19:12.220 に答える
0

あなたが達成しようとしていることを理解しているかどうか見てみましょう:

  1. データベースの varchar フィールドにアドホック ユーザー コードを格納する
  2. 上記のコードを読んで実行する
  3. 上記のコードが問題のデータベースに影響を与えることを許可します。drop table ...

私がそれを持っていると仮定すると、あなたは何かを書くことができます

  1. コードを保持しているテーブルを読み取ります(使用pyodbcまたは何か)
  2. データベースからプルされたものを実行evalします-これにより、自己更新コードを含む任意のコードを実行できます

これがあなたがやりたいことだと確信していますか?

于 2013-05-09T20:40:34.197 に答える