<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[PythonJS]]></title><description><![CDATA[PythonJS bridges the gap between **Python &amp; JavaScript**, offering tutorials, projects, and insights for students &amp; professionals. Learn, code, and inno]]></description><link>https://blog.pythonjs.org</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 12:06:31 GMT</lastBuildDate><atom:link href="https://blog.pythonjs.org/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Pandas indexing]]></title><description><![CDATA[Pandas Indexing 🐼
Pandas is a powerful library in Python that facilitates data manipulation and analysis. A fundamental concept in Pandas is indexing, which is used to select specific rows or columns from a DataFrame.
Indexing Methods
There are seve...]]></description><link>https://blog.pythonjs.org/pandas-indexing</link><guid isPermaLink="true">https://blog.pythonjs.org/pandas-indexing</guid><category><![CDATA[pandas]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Python JS]]></dc:creator><pubDate>Sat, 24 Jan 2026 07:43:42 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-pandas-indexing">Pandas Indexing 🐼</h1>
<p>Pandas is a powerful library in Python that facilitates data manipulation and analysis. A fundamental concept in Pandas is indexing, which is used to select specific rows or columns from a DataFrame.</p>
<h2 id="heading-indexing-methods">Indexing Methods</h2>
<p>There are several ways to index a DataFrame in Pandas:</p>
<ul>
<li><p><strong>.loc</strong>: This is a label-based indexing method, allowing you to select rows or columns by their labels. It can be used with DataFrame and Series and supports boolean conditions.</p>
</li>
<li><p><strong>.iloc</strong>: This is an integer-based indexing method, enabling selection by integer position. It is applicable to both DataFrame and Series.</p>
</li>
<li><p><strong>[] operator</strong>: A shorthand method for indexing, allowing selection by labels or integer positions. It also supports boolean indexing.</p>
</li>
<li><p><strong>.at</strong>: Used for scalar value retrieval, it is faster than .loc for accessing a single value.</p>
</li>
<li><p><strong>.iat</strong>: Similar to .at, but uses integer indexing instead of labels.</p>
</li>
</ul>
<h2 id="heading-examples">Examples</h2>
<ul>
<li><p>Selecting a single column by label: <code>df.loc[:, 'column_name']</code></p>
</li>
<li><p>Selecting multiple columns by label: <code>df.loc[:, ['column_1', 'column_2']]</code></p>
</li>
<li><p>Selecting a single row by integer position: <code>df.iloc[0]</code></p>
</li>
<li><p>Selecting multiple rows by integer position: <code>df.iloc[0:5]</code></p>
</li>
<li><p>Selecting a single element by label: <code>df.loc['row_label', 'column_label']</code></p>
</li>
<li><p>Selecting a single element by integer position: <code>df.iloc[0, 0]</code></p>
</li>
</ul>
<p>Pandas uses zero-based indexing, so the first row and column have an index of 0.</p>
<h2 id="heading-test-dataframe">Test DataFrame</h2>
<p>Here is an example of a small DataFrame to test these concepts:</p>
<pre><code class="lang-python"><span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd

data = {
    <span class="hljs-string">'name'</span>: [<span class="hljs-string">'John'</span>, <span class="hljs-string">'Mike'</span>, <span class="hljs-string">'Sara'</span>, <span class="hljs-string">'Kate'</span>, <span class="hljs-string">'Bob'</span>],
    <span class="hljs-string">'age'</span>: [<span class="hljs-number">35</span>, <span class="hljs-number">28</span>, <span class="hljs-number">31</span>, <span class="hljs-number">22</span>, <span class="hljs-number">45</span>],
    <span class="hljs-string">'city'</span>: [<span class="hljs-string">'New York'</span>, <span class="hljs-string">'Los Angeles'</span>, <span class="hljs-string">'Chicago'</span>, <span class="hljs-string">'Houston'</span>, <span class="hljs-string">'Phoenix'</span>]
}

df = pd.DataFrame(data, columns=[<span class="hljs-string">'name'</span>, <span class="hljs-string">'age'</span>, <span class="hljs-string">'city'</span>])
</code></pre>
<p>This DataFrame has three columns: 'name', 'age', and 'city', and five rows. You can test the different indexing methods using the following commands:</p>
<ul>
<li><p>Selecting a single column by label: <code>print(df.loc[:, 'name'])</code></p>
</li>
<li><p>Selecting multiple columns by label: <code>print(df.loc[:, ['name', 'age']])</code></p>
</li>
<li><p>Selecting a single row by integer position: <code>print(df.iloc[0])</code></p>
</li>
<li><p>Selecting multiple rows by integer position: <code>print(df.iloc[0:3])</code></p>
</li>
<li><p>Selecting a single element by label: <code>print(df.at[0, 'name'])</code></p>
</li>
<li><p>Selecting a single element by integer position: <code>print(df.iat[0, 0])</code></p>
</li>
</ul>
<p>Experiment with different indices to see how the results change.</p>
<h2 id="heading-advanced-indexing-techniques">Advanced Indexing Techniques</h2>
<p>In addition to these basic methods, Pandas offers advanced indexing techniques:</p>
<ul>
<li><p><strong>Boolean indexing</strong>: Select rows that meet certain conditions, e.g., <code>df[df['age'] &gt; 30]</code>.</p>
</li>
<li><p><strong>.query() method</strong>: Filter DataFrames using a query string, similar to SQL queries, useful for multiple conditions.</p>
</li>
<li><p><strong>.reindex() method</strong>: Reorder the rows or columns of a DataFrame based on a new index.</p>
</li>
<li><p><strong>.set_index() method</strong>: Reset the index of a DataFrame to a column of your choice.</p>
</li>
</ul>
<p>These examples cover the basics, but Pandas provides many more advanced indexing options to explore.</p>
]]></content:encoded></item><item><title><![CDATA[Managing Python packages the right way and not suffer with "Pip environment pollution".]]></title><description><![CDATA[Managing Python packages the right way
"Pip environment pollution/Python environment pollution" refers to the situation where multiple versions of the same package are installed in different environments, such as in different virtual environments or ...]]></description><link>https://blog.pythonjs.org/managing-python-packages-the-right-way-and-not-suffer-with-pip-environment-pollution</link><guid isPermaLink="true">https://blog.pythonjs.org/managing-python-packages-the-right-way-and-not-suffer-with-pip-environment-pollution</guid><dc:creator><![CDATA[Python JS]]></dc:creator><pubDate>Sat, 24 Jan 2026 07:39:46 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-managing-python-packages-the-right-way">Managing Python packages the right way</h1>
<p>"Pip environment pollution/Python environment pollution" refers to the situation where multiple versions of the same package are installed in different environments, such as in different virtual environments or in the global environment, and this can cause conflicts and issues when running the code.</p>
<p>To avoid pip environment pollution, it is recommended to use a virtual environment for each project and install the required packages in the virtual environment. This will ensure that the packages are isolated from the global environment and other virtual environments, so there will be no conflicts or issues caused by having multiple versions of the same package installed.</p>
<p>To create a virtual environment and install packages in it using pip, you can use the following steps:</p>
<ol>
<li>Install the <code>virtualenv</code> package using the following command:</li>
</ol>
<pre><code class="lang-python">pip install virtualenv
</code></pre>
<ol start="2">
<li>Create a new virtual environment for your project using the following command:</li>
</ol>
<pre><code class="lang-python">virtualenv /path/to/my/env
</code></pre>
<ol start="3">
<li>Activate the virtual environment using the following command:</li>
</ol>
<pre><code class="lang-python">source /path/to/my/env/bin/activate
</code></pre>
<ol start="4">
<li>Install the required packages in the virtual environment using the following command:</li>
</ol>
<pre><code class="lang-python">pip install &lt;package-name&gt;
</code></pre>
<ol start="5">
<li>When you are done working on the project and want to deactivate the virtual environment, use the following command:</li>
</ol>
<pre><code class="lang-python">deactivate
</code></pre>
<p>By using a virtual environment for each project, you can avoid pip environment pollution and ensure that your projects are isolated from each other and from the global environment. This can help prevent conflicts and issues caused by having multiple versions of the same package installed.</p>
]]></content:encoded></item><item><title><![CDATA[Beginners Guide to Python: Day 1 Learning and Exploring IPython]]></title><description><![CDATA[Hey there, future Pythonista! 🐍
Welcome to the world of Python programming! If you've ever wanted to learn how to code but didn't know where to start, you're in the right place. Python is one of the easiest, most powerful, and widely used programmin...]]></description><link>https://blog.pythonjs.org/beginners-guide-to-python-day-1-learning-and-exploring-ipython</link><guid isPermaLink="true">https://blog.pythonjs.org/beginners-guide-to-python-day-1-learning-and-exploring-ipython</guid><category><![CDATA[Python]]></category><category><![CDATA[Python 3]]></category><category><![CDATA[python beginner]]></category><category><![CDATA[python projects]]></category><category><![CDATA[ipython]]></category><dc:creator><![CDATA[Python JS]]></dc:creator><pubDate>Tue, 04 Mar 2025 19:28:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/D9Zow2REm8U/upload/e545bbf7438d748efdda2c8a6a53e9f9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-hey-there-future-pythonista"><strong>Hey there, future Pythonista!</strong> 🐍</h2>
<p>Welcome to the world of <strong>Python programming</strong>! If you've ever wanted to learn how to code but didn't know where to start, you're in the right place. Python is one of the <strong>easiest, most powerful, and widely used</strong> programming languages out there, and today, we're taking our <strong>first step together</strong>.</p>
<p>By the end of this lesson, you’ll:<br />✅ Understand what Python is and why it's awesome.<br />✅ Set up your Python environment with <strong>IPython</strong>.<br />✅ Write your <strong>first Python program</strong>.<br />✅ Explore <strong>basic Python concepts</strong> like variables and math operations.</p>
<p>Let’s dive in and make learning Python fun! 🎉</p>
<hr />
<h2 id="heading-what-is-python-and-why-should-you-care"><strong>🐍 What is Python, and Why Should You Care?</strong></h2>
<p>Python is a <strong>high-level, beginner-friendly programming language</strong> used for <strong>web development, data science, automation, AI, and more</strong>. Here’s why <strong>millions of developers</strong> love Python:</p>
<p>✔️ <strong>Simple &amp; Readable</strong> – The syntax is close to English!<br />✔️ <strong>Versatile</strong> – You can build websites, analyze data, or even automate tasks.<br />✔️ <strong>Huge Community</strong> – Tons of resources and support.<br />✔️ <strong>Powerful Libraries</strong> – Pre-built tools for almost everything!</p>
<p>It was created by <strong>Guido van Rossum</strong> in 1991 and has since <strong>become one of the most popular languages in the world</strong>. Whether you want to become a software engineer, a data scientist, or an automation wizard, Python is the perfect starting point.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769242569137/7d9d28dc-b629-4b28-b8bd-6deb564a5c4a.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-setting-up-python-and-ipython-the-fun-way"><strong>🛠️ Setting Up Python and IPython (The Fun Way!)</strong></h2>
<p>To write and run Python code, we need a coding environment. Instead of using the boring default Python shell, we'll use <strong>IPython</strong>, which makes coding <strong>faster, smarter, and more fun</strong>!</p>
<h3 id="heading-step-1-check-if-python-is-installed"><strong>Step 1: Check if Python is Installed</strong></h3>
<p>Open your terminal (<strong>Command Prompt</strong> on Windows, <strong>Terminal</strong> on macOS/Linux) and type:</p>
<pre><code class="lang-sh">python --version
</code></pre>
<p>or</p>
<pre><code class="lang-sh">python3 --version
</code></pre>
<p>If Python is <strong>not installed</strong>, download and install it from <a target="_blank" href="https://www.python.org/downloads/">Python.org</a>.</p>
<h3 id="heading-step-2-install-ipython"><strong>Step 2: Install IPython</strong></h3>
<p>Once Python is installed, open your terminal and type:</p>
<pre><code class="lang-sh">pip install ipython
</code></pre>
<h3 id="heading-step-3-launch-ipython"><strong>Step 3: Launch IPython</strong></h3>
<p>After installation, start IPython by running:</p>
<pre><code class="lang-sh">ipython
</code></pre>
<p>Now, you should see a fancy Python prompt like this:</p>
<pre><code class="lang-plaintext">In [1]:
</code></pre>
<p>You're now inside <strong>IPython</strong>, an interactive Python shell where you can <strong>write, test, and run code dynamically</strong>! 🚀</p>
<hr />
<h2 id="heading-writing-your-first-python-program"><strong>👨‍💻 Writing Your First Python Program</strong></h2>
<p>Time to write some actual code! Open <strong>IPython</strong> and type:</p>
<pre><code class="lang-python">print(<span class="hljs-string">"Hello, Python World!"</span>)
</code></pre>
<p>Press <strong>Enter</strong>, and you should see:</p>
<pre><code class="lang-plaintext">Hello, Python World!
</code></pre>
<p>🎉 <strong>Congratulations! You just wrote your first Python program!</strong> 🎉</p>
<h3 id="heading-what-just-happened"><strong>💡 What Just Happened?</strong></h3>
<ul>
<li><p>The <code>print()</code> function <strong>displays text</strong> on the screen.</p>
</li>
<li><p><code>"Hello, Python World!"</code> is a <strong>string</strong> (text data in Python).</p>
</li>
</ul>
<p>That’s it! <strong>You’re already coding in Python.</strong> 🔥</p>
<hr />
<h2 id="heading-playing-with-variables-in-ipython"><strong>📌 Playing with Variables in IPython</strong></h2>
<p>Python lets you <strong>store information in variables</strong> so you can use it later. Try this in IPython:</p>
<pre><code class="lang-python">name = <span class="hljs-string">"Alice"</span>  <span class="hljs-comment"># A string</span>
age = <span class="hljs-number">25</span>        <span class="hljs-comment"># An integer</span>
height = <span class="hljs-number">5.6</span>    <span class="hljs-comment"># A float (decimal number)</span>
is_student = <span class="hljs-literal">True</span>  <span class="hljs-comment"># A boolean (True/False)</span>
</code></pre>
<p>Now, type the variable name and hit <strong>Enter</strong> to see its value:</p>
<pre><code class="lang-python">name
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">'Alice'
</code></pre>
<p>You can also check <strong>what type of data</strong> is stored in a variable:</p>
<pre><code class="lang-python">type(age)
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">&lt;class 'int'&gt;
</code></pre>
<p>✔ <strong>Integers</strong> (<code>int</code>) store whole numbers.<br />✔ <strong>Floats</strong> (<code>float</code>) store decimal numbers.<br />✔ <strong>Strings</strong> (<code>str</code>) store text.<br />✔ <strong>Booleans</strong> (<code>bool</code>) store <code>True</code> or <code>False</code>.</p>
<hr />
<h2 id="heading-doing-math-in-python-like-a-calculator"><strong>➗ Doing Math in Python (Like a Calculator!)</strong></h2>
<p>Python can handle basic arithmetic like a <strong>calculator</strong>. Try this:</p>
<pre><code class="lang-python"><span class="hljs-number">5</span> + <span class="hljs-number">3</span>   <span class="hljs-comment"># Addition</span>
<span class="hljs-number">10</span> - <span class="hljs-number">2</span>  <span class="hljs-comment"># Subtraction</span>
<span class="hljs-number">4</span> * <span class="hljs-number">3</span>   <span class="hljs-comment"># Multiplication</span>
<span class="hljs-number">8</span> / <span class="hljs-number">2</span>   <span class="hljs-comment"># Division</span>
<span class="hljs-number">10</span> % <span class="hljs-number">3</span>  <span class="hljs-comment"># Modulus (Remainder)</span>
</code></pre>
<p>Want to store results?</p>
<pre><code class="lang-python">result = <span class="hljs-number">10</span> * <span class="hljs-number">5</span>
print(result)
</code></pre>
<p>Output:</p>
<pre><code class="lang-plaintext">50
</code></pre>
<p>✔ <strong>Python remembers your calculations</strong> so you can use them later!</p>
<hr />
<h2 id="heading-why-ipython-is-awesome"><strong>🚀 Why IPython is Awesome</strong></h2>
<p>IPython is not just <strong>any Python shell</strong>—it has <strong>superpowers!</strong> 🦸</p>
<p>✅ <strong>Auto-completion</strong> – Press <code>Tab</code> to complete commands.<br />✅ <strong>Syntax Highlighting</strong> – Makes your code more readable.<br />✅ <strong>Magic Commands</strong> – Special shortcuts to speed up your work.</p>
<h3 id="heading-measure-execution-time-in-ipython"><strong>⏳ Measure Execution Time in IPython</strong></h3>
<p>Ever wondered <strong>how fast</strong> your code runs? Try this:</p>
<pre><code class="lang-python">%timeit sum(range(<span class="hljs-number">1000</span>))
</code></pre>
<p>This tells you <strong>how long it takes to execute</strong> the operation. Super useful! 🚀</p>
<hr />
<h2 id="heading-homework-practice-amp-explore"><strong>🎯 Homework: Practice &amp; Explore</strong></h2>
<p>To make sure you <strong>really understand today's lesson</strong>, try these exercises in IPython:</p>
<p>1️⃣ Assign your <strong>name, age, and favorite food</strong> to variables.<br />2️⃣ Perform <strong>basic math</strong> and store the results in a variable.<br />3️⃣ Use the <code>type()</code> function to check the <strong>data types</strong> of different variables.<br />4️⃣ Take <strong>user input</strong> and print a greeting:</p>
<pre><code class="lang-python">name = input(<span class="hljs-string">"Enter your name: "</span>)
print(<span class="hljs-string">"Hello,"</span>, name)
</code></pre>
<p>📌 <strong>Pro Tip:</strong> Experiment and try new things in IPython—it’s a great way to learn!</p>
<hr />
<h2 id="heading-whats-coming-next"><strong>🔜 What’s Coming Next?</strong></h2>
<p>Now that you’ve written your <strong>first Python program</strong>, it’s time to level up! In the <strong>next lesson</strong>, we’ll dive into:</p>
<p>✅ <strong>Lists, Tuples, and Dictionaries</strong> (Powerful ways to store data)<br />✅ <strong>Loops and Conditional Statements</strong> (Making Python programs smarter)</p>
<p>Stay tuned—<strong>this is just the beginning!</strong> 🚀</p>
<hr />
<h2 id="heading-final-thoughts-you-did-it"><strong>🙌 Final Thoughts: You Did It!</strong></h2>
<p>You’ve officially taken your <strong>first step into Python programming</strong>! Whether you want to build websites, analyze data, or automate tasks, Python is your gateway to endless possibilities.</p>
<p>🚀 <strong>Keep practicing, stay curious, and have fun!</strong></p>
<p>👉 <strong>If this lesson helped you, share it with a friend who wants to learn Python!</strong><br />🔔 <strong>Subscribe to get the next lesson straight to your inbox!</strong></p>
<hr />
<p>💡 <strong>Got any questions?</strong> Drop them in the comments—I’d love to help! 😊</p>
]]></content:encoded></item><item><title><![CDATA[Mastering Postgres Transactions: A Deep Dive into BEGIN, SAVEPOINT, ROLLBACK, and COMMIT Commands]]></title><description><![CDATA[In PostgreSQL, the BEGIN, ROLLBACK, and COMMIT statements are used to manage transactions.
What is a transaction in Postgres?
A transaction is a group of SQL statements that are treated as a single unit of work. Transactions are used to ensure that e...]]></description><link>https://blog.pythonjs.org/mastering-postgres-transactions-a-deep-dive-into-begin-savepoint-rollback-and-commit-commands</link><guid isPermaLink="true">https://blog.pythonjs.org/mastering-postgres-transactions-a-deep-dive-into-begin-savepoint-rollback-and-commit-commands</guid><category><![CDATA[PostgreSQL]]></category><category><![CDATA[postgres]]></category><category><![CDATA[postgres transaction]]></category><category><![CDATA[begin savpoint rollback commit]]></category><category><![CDATA[postgres life saver commands]]></category><dc:creator><![CDATA[Python JS]]></dc:creator><pubDate>Tue, 27 Jun 2023 02:30:23 GMT</pubDate><content:encoded><![CDATA[<p>In PostgreSQL, the <code>BEGIN</code>, <code>ROLLBACK</code>, and <code>COMMIT</code> statements are used to manage transactions.</p>
<h3 id="heading-what-is-a-transaction-in-postgres">What is a transaction in Postgres?</h3>
<p>A transaction is a group of SQL statements that are treated as a single unit of work. Transactions are used to ensure that either all of the statements are completed successfully, or none are completed. This can be useful for maintaining the integrity of your data, especially when working with multiple tables or when making changes that cannot be easily undone.</p>
<h3 id="heading-how-to-use-transactions">How to use transactions?</h3>
<p>A transaction can start with <code>BEGIN</code> command and completed with <code>COMMIT</code> command once we complete our task.</p>
<p>Here's an example of how you might use these statements in PostgreSQL:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">BEGIN</span>;

<span class="hljs-comment">-- SQL statements go here</span>

<span class="hljs-keyword">COMMIT</span>;
</code></pre>
<p>In this example, the <code>BEGIN</code> statement starts a new transaction and the <code>COMMIT</code> statement ends it. Any SQL statements that are executed between the <code>BEGIN</code> and <code>COMMIT</code> statements will be part of the transaction.</p>
<h3 id="heading-how-rollback-saves-our-life">How rollback saves our life?</h3>
<p>If you want to undo the changes made by the transaction, you can use the <code>ROLLBACK</code> statement instead of the <code>COMMIT</code> statement:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">BEGIN</span>;

<span class="hljs-comment">-- SQL statements go here</span>

<span class="hljs-keyword">ROLLBACK</span>;
</code></pre>
<p>In this case, the <code>ROLLBACK</code> statement will undo any changes made by the SQL statements that were part of the transaction.</p>
<p>It's important to note that the <code>BEGIN</code>, <code>ROLLBACK</code>, and <code>COMMIT</code> statements only affect the current transaction. If you start a new transaction before rolling back the previous one, the changes made in the previous transaction will be committed, and the new transaction will begin with a clean slate.</p>
<p>You can refer to the documentation for more information on transactions and how to use them in PostgreSQL.</p>
<h3 id="heading-how-to-use-savepoints-for-partial-rollback">How to use savepoints for partial rollback?</h3>
<p>In PostgreSQL, a savepoint is a point within a transaction where you can roll back part of the transaction without rolling back the entire transaction. This can be useful when you have a long transaction with multiple steps, and you want to undo some of the steps without undoing the entire transaction.</p>
<p>To use a savepoint in a PostgreSQL transaction, you first need to start a transaction using the <code>BEGIN</code> statement. Then, you can create a savepoint using the <code>SAVEPOINT</code> statement:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">BEGIN</span>;

<span class="hljs-comment">-- Some SQL statements go here</span>

<span class="hljs-keyword">SAVEPOINT</span> savepoint_name;

<span class="hljs-comment">-- More SQL statements go here</span>
</code></pre>
<p>In this example, the <code>SAVEPOINT</code> statement creates a savepoint named <code>savepoint_name</code> within the current transaction.</p>
<p>If you want to roll back part of the transaction to the savepoint, you can use the <code>ROLLBACK TO SAVEPOINT</code> statement:</p>
<pre><code class="lang-sql"><span class="hljs-keyword">ROLLBACK</span> <span class="hljs-keyword">TO</span> <span class="hljs-keyword">SAVEPOINT</span> savepoint_name;
</code></pre>
<p>This will roll back the transaction to the point where the savepoint was created, undoing any changes made by the SQL statements executed after the savepoint was created.</p>
<p>You can create multiple savepoints within a single transaction, and you can roll back to any of them using the <code>ROLLBACK TO SAVEPOINT</code> statement. When you are finished with the transaction, you can use the <code>COMMIT</code> or <code>ROLLBACK</code> statement to end the transaction.</p>
<p>You can refer to the documentation for more information on transactions and how to use them in PostgreSQL.</p>
]]></content:encoded></item></channel></rss>