C#/Python/MATLAB操作PostgreSQL數據庫


PostgreSQL數據庫是一個功能非常強大的開源數據庫,支持多種SQL特性,非常好用。此外由於結合PostGIS可以實現空間數據庫功能,故非常適合GIS領域的使用。本文旨在介紹C#、Python、MATLAB對PostgreSQL進行操作的最基本方法,並實現遠程數據庫的連接。

1.C#連接PostgreSQL

C#連接PostgreSQL需要使用Npgsql,可以通過Visual Studio自帶的nuget下載:

Install-Package Npgsql

之后在代碼中進行引用即可。

以下是案例代碼:

 1 //連接數據庫
 2 NpgsqlConnection connection = new NpgsqlConnection("Server = 127.0.0.1; Port = 5432; UserId = postgres; Password = postgres;Database = db_name");
 3 connection.Open();
 4 
 5 //構造SQL語句
 6 string sqlCommand = "SELECT * FROM table_name";
 7 NpgsqlCommand command = new NpgsqlCommand(sqlCommand, connection);
 8 
 9 //讀取數據
10 NpgsqlDataReader reader = command.ExecuteReader();
11 reader.Read();
12 
13 //獲取數據
14 string data;
15 data=reader.GetString(0);
16 
17 //關閉數據庫
18 connection.Close();

以上即為操作數據庫並讀取數據的方法。首先連接數據庫,之后構造SQL語句並應用於postgresql中,接着構造NpgsqlDataReader,應用NpgsqlCommand.ExecuteReader()方法讀取數據,最終根據讀取出的數據類型進行獲取數據。讀取完畢后不要忘記關閉數據庫。

如果不讀取數據,而僅僅是進行SQL語句的操作,例如修改或刪除等,方法類似,但需要使用NpgsqlCommand.ExecuteNonQuery()方法。

具體代碼如下:

 1 //連接數據庫
 2 NpgsqlConnection connection = new NpgsqlConnection("Server = 127.0.0.1; Port = 5432; UserId = postgres; Password = postgres;Database = db_name");
 3 connection.Open();
 4 
 5 //構造SQL語句
 6 string sqlCommand = "UPDATE table_name SET column1=update_attribute WHERE column2=origin_attribute";
 7 NpgsqlCommand command = new NpgsqlCommand(sqlCommand, connection);
 8 
 9 //執行SQL語句
10 command.ExecuteNonQuery();
11 
12 //關閉數據庫
13 connection.Close();

2. Python連接PostgreSQL

使用Python連接PostgreSQL可以使用多種第三方包,而PostgreSQL官方推薦的是Psycopg2這個包,同時支持Python2和Python3的版本。可以使用pip進行安裝:

pip install psycopg2

安裝完成后,即可引用到自己的代碼中:

import psycopg2

具體連接數據庫並進行操作的代碼如下:

 1 //連接數據庫
 2 connection = psycopg2.connect(database="db_name", user="postgres",password="postgres",host="127.0.0.1",port="5432")
 3 //獲取游標
 4 cursor = connection.cursor()
 5 //設置SQL語句
 6 sql_command_select = "SELECT * FROM table_name;"
 7 
 8 try:
 9     //執行SQL語句
10     cursor.execute(sql_command_select)
11     //獲取所有的數據
12     data_all = cursor.fetchall()
13     for data in data_all:
14         //遍歷數據
15         print(data)
16 except Exception as e:
17     print(e)
18     //如果出現錯誤,數據庫復原
19     connection.rollback()
20     

在代碼中,可以看到首先是連接數據庫,之后獲取游標,構造SQL語句,並完成了對於數據的查詢。在上例中,獲取全部的數據使用的是cursor.fetchall()函數,倘若只是獲取一條數據,可以使用cursor.fetchone()函數一條一條數據進行讀取。

倘若需要對數據庫進行修改、添加、刪除等功能,只需要使用cursor.execute()函數即可完成SQL語句的執行。

注意對於數據的讀取需要加上異常檢測的代碼,倘若讀取數據出錯,需要使用connection.rollback()函數恢復到數據庫出錯前的狀態,否則會一直卡在出錯的地方不能繼續。


3. MATLAB連接PostgreSQL

MATLAB連接PostgreSQL數據庫首先需要下載.jar(JDBC)文件。地址:https://jdbc.postgresql.org/download.html

之后需要將下載的jar文件添加到MATLAB的jar目錄中。

之后輸入在MATLAB命令行中輸入:

edit classpath.txt

在文本最后添加這條代碼:

$matlabroot/java/jar/postgresql-9.4.1212.jre6.jar

之后保存並關閉文本,重啟MATLAB,輸入:

javaclasspath

倘若出現的文本中最后出現了postgresql的路徑,說明添加成功。

之后即可進行數據庫的連接和操作。

MATLAB連接數據庫和操作數據庫的方法如下:

%連接數據庫	
connection=database('db_name','postgres','postgres','org.postgresql.Driver','jdbc:postgresql://localhost:5432/db_name');
%構造SQL語句
sqlcommand='select * from table_name;'
%執行SQL語句
cursor=exec(connection,sqlcommand);
%獲取指定數量的數據
row=fetch(cursor,1);

與前面的代碼結構類似,首先是連接數據庫,之后構造SQL語句,完成對於數據的查詢。在上例中,獲取數據使用的是fetch()函數,分別傳入連接的數據庫和具體數量。

倘若需要對數據庫進行修改、添加、刪除等功能,只需要使用exec(connection, sqlcommand)函數即可完成SQL語句的執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM