PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Sederhanakan penggunaan basis data (psycopg2) dengan membuat modul

Masalah utama Anda, adalah bahwa setiap variabel terbatas pada fungsi tempat Anda menulisnya.
Kecuali dinyatakan lain seperti:

def db_init():
    global conn
    conn = psycopg2....

Pendekatan yang lebih baik adalah mengubahnya menjadi kelas, contoh dasarnya adalah:

import psycopg2

class MyDatabase():
    def __init__(self, db="mydb", user="postgres"):
        self.conn = psycopg2.connect(database=db, user=user)
        self.cur = self.conn.cursor()

    def query(self, query):
        self.cur.execute(query)

    def close(self):
        self.cur.close()
        self.conn.close()

db = MyDatabase()
db.query("SELECT * FROM table;")
db.close()

Sekarang, SELECT kueri tidak akan banyak membantu karena Anda menggunakan cur.execute() .
Tetapi saya menyimpan ini dengan tujuan untuk menjaga agar kode tetap serupa dengan apa yang Anda tulis, Anda akan ingin menukarnya untuk mengembalikan nilai namun jika memanggil kueri yang diharapkan mengembalikan nilai dan seterusnya.

Pendekatan Anda yang berfokus pada fungsi akan memiliki masalah "ruang nama" di mana variabel berada dalam lingkup lokal fungsi tersebut dan di sana untuk fungsi lain biasanya tidak dapat mengaksesnya.

Sebagai gantinya, variabel cakupan kelas dapat mengakses variabelnya sendiri dan tersedia untuk tidak terbatas di luar kotak.

Anda dapat membuat variabel global dan mendeklarasikannya sebagai global dalam fungsi, tetapi saya pikir seperti yang saya sebutkan dalam komentar:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat menghubungkan Aplikasi Android Studio saya dengan PostgreSQL

  2. sifat `diesel::Expression` tidak diterapkan untuk `bigdecimal::BigDecimal`

  3. Mencegah injeksi SQL di PHP dengan MDB2

  4. Apa perilaku yang diharapkan untuk beberapa fungsi pengembalian set dalam klausa SELECT?

  5. Penghentian NGINX TLS untuk PostgreSQL