# 46. PL/Python - Python Procedural Language

PL/Python 程序語言允許 PostgreSQL 函數以 [Python 語言](https://www.python.org/)撰寫。

To install PL/Python in a particular database, use `CREATE EXTENSION plpython3u`.

{% hint style="info" %}
如果將語言安裝到 template1 中，則所有隨後建立的資料庫將自動安裝該語言。
{% endhint %}

PL/Python is only available as an “untrusted” language, meaning it does not offer any way of restricting what users can do in it and is therefore named `plpython3u`. A trusted variant `plpython` might become available in the future if a secure execution mechanism is developed in Python. The writer of a function in untrusted PL/Python must take care that the function cannot be used to do anything unwanted, since it will be able to do anything that could be done by a user logged in as the database administrator. Only superusers can create functions in untrusted languages such as `plpython3u`.

{% hint style="info" %}
自行編譯原始碼的使用者必須在安裝程序中特別啟用 PL/Python 的編譯。（更多相關資訊，請參閱安裝說明。）使用預先編譯版本的使用者可以在單獨的套件中找到 PL/Python。
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.postgresql.tw/16/server-programming/pl-python-python-procedural-language-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
