Hướng dẫn how do i connect postgresql database to python flask? - làm cách nào để kết nối cơ sở dữ liệu postgresql với bình python?

Tác giả đã chọn quỹ nguồn mở và miễn phí để nhận quyên góp như một phần của chương trình Write for quyên góp.

Giới thiệu

Trong các ứng dụng web, bạn thường cần một cơ sở dữ liệu, là một bộ sưu tập dữ liệu có tổ chức. Bạn sử dụng cơ sở dữ liệu để lưu trữ và duy trì dữ liệu liên tục có thể được truy xuất và thao tác hiệu quả. Ví dụ: trong một ứng dụng truyền thông xã hội, bạn có một cơ sở dữ liệu trong đó dữ liệu người dùng (thông tin cá nhân, bài đăng, nhận xét, người theo dõi) được lưu trữ theo cách có thể được thao tác hiệu quả. Bạn có thể thêm dữ liệu vào cơ sở dữ liệu, truy xuất nó, sửa đổi nó hoặc xóa nó, tùy thuộc vào các yêu cầu và điều kiện khác nhau. Trong một ứng dụng web, các yêu cầu này có thể là người dùng thêm một bài đăng mới, xóa một bài đăng hoặc xóa tài khoản của họ, điều này có thể hoặc không thể xóa bài đăng của họ. Các hành động bạn thực hiện để thao tác dữ liệu sẽ phụ thuộc vào các tính năng cụ thể trong ứng dụng của bạn. Ví dụ: bạn có thể không muốn người dùng thêm bài đăng không có tiêu đề.

Flask là một khung web Python nhẹ, cung cấp các công cụ và tính năng hữu ích để tạo các ứng dụng web bằng ngôn ngữ Python. PostgreSQL, hoặc Postgres, là một hệ thống quản lý cơ sở dữ liệu quan hệ cung cấp việc triển khai ngôn ngữ truy vấn SQL. Nó tuân thủ các tiêu chuẩn và có nhiều tính năng nâng cao như giao dịch đáng tin cậy và đồng thời mà không cần khóa đọc.

Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng web đánh giá sách nhỏ cho thấy cách sử dụng thư viện

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7, bộ điều hợp cơ sở dữ liệu PostgreSQL cho phép bạn tương tác với cơ sở dữ liệu PostgreSQL của mình trong Python. Bạn sẽ sử dụng nó với bình để thực hiện các tác vụ cơ bản, chẳng hạn như kết nối với máy chủ cơ sở dữ liệu, tạo bảng, chèn dữ liệu vào bảng và lấy dữ liệu từ bảng.

Điều kiện tiên quyết

  • Một môi trường lập trình Python 3 địa phương. Thực hiện theo hướng dẫn để phân phối của bạn trong cách cài đặt và thiết lập môi trường lập trình cục bộ cho Sê -ri Python 3. Trong hướng dẫn này, thư mục dự án được gọi là

    1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
    8.

  • Một sự hiểu biết về các khái niệm bình cơ bản, chẳng hạn như các tuyến đường, xem các chức năng và mẫu. Nếu bạn không quen thuộc với bình, hãy xem cách tạo ứng dụng web đầu tiên của bạn bằng Flask và Python và cách sử dụng các mẫu trong ứng dụng bình.

  • Một sự hiểu biết về các khái niệm HTML cơ bản. Bạn có thể xem lại cách xây dựng một trang web với loạt hướng dẫn HTML để biết kiến ​​thức nền.

  • PostgreSQL được cài đặt trên máy cục bộ của bạn và truy cập vào dấu nhắc PostgreSQL. Thực hiện theo cách cài đặt và sử dụng PostgreSQL trên Ubuntu 20.04 để thiết lập cơ sở dữ liệu PostgreSQL của bạn.

Bước 1 - Tạo cơ sở dữ liệu và người dùng PostgreSQL

Trong bước này, bạn sẽ tạo một cơ sở dữ liệu có tên

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 và người dùng cơ sở dữ liệu có tên
  1. \l
0 cho ứng dụng bình của bạn.

Trong quá trình cài đặt Postgres, người dùng hệ điều hành có tên

  1. \l
1 đã được tạo để tương ứng với người dùng quản trị PostgreSQL
  1. \l
1. Bạn cần sử dụng người dùng này để thực hiện các nhiệm vụ quản trị. Bạn có thể sử dụng
  1. \l
3 và chuyển tên người dùng với tùy chọn
  1. \l
4.

Đăng nhập vào phiên Postgres tương tác bằng lệnh sau:

  1. sudo -iu postgres psql

Bạn sẽ được cung cấp một lời nhắc PostgreSQL nơi bạn có thể thiết lập các yêu cầu của mình.

Đầu tiên, hãy tạo cơ sở dữ liệu cho dự án của bạn:

  1. CREATE DATABASE flask_db;

Lưu ý: Mỗi câu lệnh Postgres phải kết thúc bằng một đại hội, vì vậy hãy đảm bảo rằng lệnh của bạn kết thúc bằng một câu nếu bạn đang gặp vấn đề. Every Postgres statement must end with a semi-colon, so make sure that your command ends with one if you are experiencing issues.

Tiếp theo, tạo một người dùng cơ sở dữ liệu cho dự án của chúng tôi. Đảm bảo chọn mật khẩu an toàn:

  1. CREATE USER sammy WITH PASSWORD 'password';

Sau đó, cung cấp quyền truy cập người dùng mới này để quản lý cơ sở dữ liệu mới của bạn:

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;

Để xác nhận cơ sở dữ liệu đã được tạo, hãy lấy danh sách cơ sở dữ liệu bằng cách nhập lệnh sau:

  1. \l

Bạn sẽ thấy

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 trong danh sách các cơ sở dữ liệu.

Khi bạn kết thúc, thoát khỏi lời nhắc PostgreSQL bằng cách nhập:

  1. \q

Postgres hiện được thiết lập để bạn có thể kết nối và quản lý thông tin cơ sở dữ liệu của nó thông qua Python bằng thư viện

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7. Tiếp theo, bạn sẽ cài đặt thư viện này cùng với gói Flask.

Bước 2 - Cài đặt bình và psycopg2

Trong bước này, bạn sẽ cài đặt Flask và thư viện

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7 để bạn có thể tương tác với cơ sở dữ liệu của mình bằng Python.

Với môi trường ảo được kích hoạt, sử dụng

  1. \l
8 để cài đặt bình và thư viện
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7:

  1. pip install Flask psycopg2-binary

Sau khi cài đặt được hoàn thành thành công, bạn sẽ thấy một dòng tương tự như sau ở cuối đầu ra:

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2

Bây giờ bạn có các gói cần thiết được cài đặt trên môi trường ảo của bạn. Tiếp theo, bạn sẽ kết nối và thiết lập cơ sở dữ liệu của mình.

Bước 3 - Thiết lập cơ sở dữ liệu

Trong bước này, bạn sẽ tạo một tệp Python trong thư mục dự án

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
8 của mình để kết nối với cơ sở dữ liệu
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9, tạo một bảng để lưu trữ sách và chèn một số sách với các đánh giá vào nó.

Đầu tiên với môi trường lập trình của bạn được kích hoạt, hãy mở một tệp mới có tên

  1. \q
2 trong thư mục
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
8 của bạn.

  1. nano init_db.py

Tệp này sẽ mở kết nối với cơ sở dữ liệu

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9, tạo một bảng có tên
  1. \q
5 và điền vào bảng bằng dữ liệu mẫu. Thêm mã sau vào nó:

flask_app/init_db.py

import os
import psycopg2

conn = psycopg2.connect(
        host="localhost",
        database="flask_db",
        user=os.environ['DB_USERNAME'],
        password=os.environ['DB_PASSWORD'])

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table
cur.execute('DROP TABLE IF EXISTS books;')
cur.execute('CREATE TABLE books (id serial PRIMARY KEY,'
                                 'title varchar (150) NOT NULL,'
                                 'author varchar (50) NOT NULL,'
                                 'pages_num integer NOT NULL,'
                                 'review text,'
                                 'date_added date DEFAULT CURRENT_TIMESTAMP);'
                                 )

# Insert data into the table

cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('A Tale of Two Cities',
             'Charles Dickens',
             489,
             'A great classic!')
            )


cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('Anna Karenina',
             'Leo Tolstoy',
             864,
             'Another great classic!')
            )

conn.commit()

cur.close()
conn.close()

Lưu và đóng tập tin.

Trong tệp này, trước tiên bạn nhập mô -đun

  1. \q
6 mà bạn sẽ sử dụng để truy cập các biến môi trường nơi bạn sẽ lưu trữ tên người dùng và mật khẩu cơ sở dữ liệu của mình để chúng không hiển thị trong mã nguồn của bạn.

Bạn nhập thư viện

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7. Sau đó, bạn mở kết nối với cơ sở dữ liệu
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 bằng hàm
  1. \q
9. Bạn chỉ định máy chủ, đó là localhost trong trường hợp này. Bạn chuyển tên cơ sở dữ liệu cho tham số
  1. pip install Flask psycopg2-binary
0.

Bạn cung cấp tên người dùng và mật khẩu của mình thông qua đối tượng

  1. pip install Flask psycopg2-binary
1, cho phép bạn truy cập vào các biến môi trường bạn đặt trong môi trường lập trình của mình. Bạn sẽ lưu trữ tên người dùng cơ sở dữ liệu trong một biến môi trường có tên là
  1. pip install Flask psycopg2-binary
2 và mật khẩu trong biến môi trường có tên là
  1. pip install Flask psycopg2-binary
3. Điều này cho phép bạn lưu trữ tên người dùng và mật khẩu bên ngoài mã nguồn của bạn, để thông tin nhạy cảm của bạn không bị rò rỉ khi mã nguồn được lưu trong điều khiển nguồn hoặc được tải lên máy chủ trên Internet. Ngay cả khi kẻ tấn công có được quyền truy cập vào mã nguồn của bạn, họ sẽ không có quyền truy cập vào cơ sở dữ liệu.

Bạn tạo một con trỏ gọi là

  1. pip install Flask psycopg2-binary
4 bằng phương thức
  1. pip install Flask psycopg2-binary
5, cho phép mã Python thực thi các lệnh PostgreSQL trong phiên cơ sở dữ liệu.

Bạn sử dụng phương thức con trỏ

  1. pip install Flask psycopg2-binary
6 để xóa bảng
  1. \q
5 nếu nó đã tồn tại. Điều này tránh khả năng của một bảng khác có tên
  1. \q
5 hiện tại, điều này có thể dẫn đến hành vi khó hiểu (ví dụ, nếu nó có các cột khác nhau). Đây không phải là trường hợp ở đây, bởi vì bạn đã tạo ra bảng, vì vậy lệnh SQL đã thắng được thực hiện. Lưu ý rằng điều này sẽ xóa tất cả các dữ liệu hiện có bất cứ khi nào bạn thực thi tệp
  1. \q
2 này. Đối với mục đích của chúng tôi, bạn sẽ chỉ thực hiện tệp này một lần để bắt đầu cơ sở dữ liệu, nhưng bạn có thể muốn thực thi lại để xóa bất kỳ dữ liệu nào bạn đã chèn và bắt đầu lại với dữ liệu mẫu ban đầu.

Sau đó, bạn sử dụng

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
0 để tạo một bảng có tên
  1. \q
5 với các cột sau:

  • Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    2: Một ID thuộc loại

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    3, là một số nguyên tự động. Cột này đại diện cho một khóa chính mà bạn chỉ định bằng cách sử dụng từ khóa

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    4. Cơ sở dữ liệu sẽ gán một giá trị duy nhất cho khóa này cho mỗi mục.
  • Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    5: Tiêu đề cuốn sách của loại

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    6, đây là loại ký tự có độ dài biến với giới hạn.

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    7 có nghĩa là tiêu đề có thể dài tới 150 ký tự.

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    8 biểu thị rằng cột này có thể trống rỗng.
  • Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    9: Tác giả cuốn sách, với giới hạn 50 ký tự.

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    8 biểu thị rằng cột này có thể trống rỗng.
    1. nano init_db.py
    1: Một số nguyên đại diện cho số lượng trang mà cuốn sách có.

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    8 biểu thị rằng cột này có thể trống rỗng.
    1. nano init_db.py
    3: Đánh giá sách. Loại
    1. nano init_db.py
    4 biểu thị rằng đánh giá có thể là văn bản của bất kỳ độ dài nào.
    1. nano init_db.py
    5: Ngày cuốn sách được thêm vào bảng.
    1. nano init_db.py
    6 đặt giá trị mặc định của cột thành
    1. nano init_db.py
    7, đó là thời gian mà cuốn sách được thêm vào cơ sở dữ liệu. Giống như

    Output

    Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
    2, bạn không cần chỉ định giá trị cho cột này, vì nó sẽ được tự động điền vào.

Sau khi tạo bảng, bạn sử dụng phương pháp con trỏ ____ ____66 để chèn hai cuốn sách vào bàn, một câu chuyện về hai thành phố của Charles Dickens và Anna Karenina của Leo Tolstoy. Bạn sử dụng trình giữ chỗ

import os
import psycopg2

conn = psycopg2.connect(
        host="localhost",
        database="flask_db",
        user=os.environ['DB_USERNAME'],
        password=os.environ['DB_PASSWORD'])

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table
cur.execute('DROP TABLE IF EXISTS books;')
cur.execute('CREATE TABLE books (id serial PRIMARY KEY,'
                                 'title varchar (150) NOT NULL,'
                                 'author varchar (50) NOT NULL,'
                                 'pages_num integer NOT NULL,'
                                 'review text,'
                                 'date_added date DEFAULT CURRENT_TIMESTAMP);'
                                 )

# Insert data into the table

cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('A Tale of Two Cities',
             'Charles Dickens',
             489,
             'A great classic!')
            )


cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('Anna Karenina',
             'Leo Tolstoy',
             864,
             'Another great classic!')
            )

conn.commit()

cur.close()
conn.close()
0 để chuyển các giá trị cho câu lệnh SQL.
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7 xử lý việc chèn vào nền theo cách ngăn chặn các cuộc tấn công tiêm SQL.

Khi bạn hoàn tất việc chèn dữ liệu sách vào bảng của mình, bạn sử dụng phương thức

import os
import psycopg2

conn = psycopg2.connect(
        host="localhost",
        database="flask_db",
        user=os.environ['DB_USERNAME'],
        password=os.environ['DB_PASSWORD'])

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table
cur.execute('DROP TABLE IF EXISTS books;')
cur.execute('CREATE TABLE books (id serial PRIMARY KEY,'
                                 'title varchar (150) NOT NULL,'
                                 'author varchar (50) NOT NULL,'
                                 'pages_num integer NOT NULL,'
                                 'review text,'
                                 'date_added date DEFAULT CURRENT_TIMESTAMP);'
                                 )

# Insert data into the table

cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('A Tale of Two Cities',
             'Charles Dickens',
             489,
             'A great classic!')
            )


cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('Anna Karenina',
             'Leo Tolstoy',
             864,
             'Another great classic!')
            )

conn.commit()

cur.close()
conn.close()
2 để thực hiện giao dịch và áp dụng các thay đổi vào cơ sở dữ liệu. Sau đó, bạn làm sạch mọi thứ bằng cách đóng con trỏ bằng
import os
import psycopg2

conn = psycopg2.connect(
        host="localhost",
        database="flask_db",
        user=os.environ['DB_USERNAME'],
        password=os.environ['DB_PASSWORD'])

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table
cur.execute('DROP TABLE IF EXISTS books;')
cur.execute('CREATE TABLE books (id serial PRIMARY KEY,'
                                 'title varchar (150) NOT NULL,'
                                 'author varchar (50) NOT NULL,'
                                 'pages_num integer NOT NULL,'
                                 'review text,'
                                 'date_added date DEFAULT CURRENT_TIMESTAMP);'
                                 )

# Insert data into the table

cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('A Tale of Two Cities',
             'Charles Dickens',
             489,
             'A great classic!')
            )


cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('Anna Karenina',
             'Leo Tolstoy',
             864,
             'Another great classic!')
            )

conn.commit()

cur.close()
conn.close()
3 và kết nối với
import os
import psycopg2

conn = psycopg2.connect(
        host="localhost",
        database="flask_db",
        user=os.environ['DB_USERNAME'],
        password=os.environ['DB_PASSWORD'])

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table
cur.execute('DROP TABLE IF EXISTS books;')
cur.execute('CREATE TABLE books (id serial PRIMARY KEY,'
                                 'title varchar (150) NOT NULL,'
                                 'author varchar (50) NOT NULL,'
                                 'pages_num integer NOT NULL,'
                                 'review text,'
                                 'date_added date DEFAULT CURRENT_TIMESTAMP);'
                                 )

# Insert data into the table

cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('A Tale of Two Cities',
             'Charles Dickens',
             489,
             'A great classic!')
            )


cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('Anna Karenina',
             'Leo Tolstoy',
             864,
             'Another great classic!')
            )

conn.commit()

cur.close()
conn.close()
4.

Để kết nối cơ sở dữ liệu được thiết lập, hãy đặt các biến môi trường

  1. pip install Flask psycopg2-binary
2 và
  1. pip install Flask psycopg2-binary
3 bằng cách chạy các lệnh sau. Hãy nhớ sử dụng tên người dùng và mật khẩu của riêng bạn:

  1. CREATE DATABASE flask_db;
0

Bây giờ, hãy chạy tệp

  1. \q
2 của bạn trong thiết bị đầu cuối bằng lệnh
import os
import psycopg2

conn = psycopg2.connect(
        host="localhost",
        database="flask_db",
        user=os.environ['DB_USERNAME'],
        password=os.environ['DB_PASSWORD'])

# Open a cursor to perform database operations
cur = conn.cursor()

# Execute a command: this creates a new table
cur.execute('DROP TABLE IF EXISTS books;')
cur.execute('CREATE TABLE books (id serial PRIMARY KEY,'
                                 'title varchar (150) NOT NULL,'
                                 'author varchar (50) NOT NULL,'
                                 'pages_num integer NOT NULL,'
                                 'review text,'
                                 'date_added date DEFAULT CURRENT_TIMESTAMP);'
                                 )

# Insert data into the table

cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('A Tale of Two Cities',
             'Charles Dickens',
             489,
             'A great classic!')
            )


cur.execute('INSERT INTO books (title, author, pages_num, review)'
            'VALUES (%s, %s, %s, %s)',
            ('Anna Karenina',
             'Leo Tolstoy',
             864,
             'Another great classic!')
            )

conn.commit()

cur.close()
conn.close()
8:

  1. CREATE DATABASE flask_db;
1

Khi tệp hoàn tất việc thực thi không có lỗi, bảng

  1. \q
5 mới sẽ được thêm vào cơ sở dữ liệu
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 của bạn.

Đăng nhập vào phiên Postgres tương tác để kiểm tra bảng

  1. \q
5 mới.

  1. sudo -iu postgres psql

Kết nối với cơ sở dữ liệu

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 bằng lệnh
  1. CREATE DATABASE flask_db;
03:

  1. CREATE DATABASE flask_db;
3

Sau đó sử dụng tuyên bố

  1. CREATE DATABASE flask_db;
04 để lấy các tiêu đề và tác giả của sách từ bảng
  1. \q
5:

  1. CREATE DATABASE flask_db;
4

Bạn sẽ thấy một đầu ra như sau:

  1. CREATE DATABASE flask_db;
5

Thoát khỏi phiên tương tác với

  1. CREATE DATABASE flask_db;
06.

Tiếp theo, bạn sẽ tạo một ứng dụng bình nhỏ, kết nối với cơ sở dữ liệu, truy xuất hai đánh giá sách bạn đã chèn vào cơ sở dữ liệu và hiển thị chúng trên trang Index.

Bước 4 - Hiển thị sách

Trong bước này, bạn sẽ tạo một ứng dụng Flask với một trang chỉ mục truy xuất các cuốn sách có trong cơ sở dữ liệu và hiển thị chúng.

Với môi trường lập trình của bạn được kích hoạt và cài đặt bình, mở một tệp có tên

  1. CREATE DATABASE flask_db;
07 để chỉnh sửa bên trong thư mục
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
8 của bạn:

  1. CREATE DATABASE flask_db;
6

Tệp này sẽ thiết lập kết nối cơ sở dữ liệu của bạn và tạo một tuyến bình đơn để sử dụng kết nối đó. Thêm mã sau vào tệp:

flask_app/app.py

  1. CREATE DATABASE flask_db;
7

Lưu và đóng tập tin.

Tại đây, bạn nhập mô -đun

  1. \q
6, thư viện
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7 và lớp
  1. CREATE DATABASE flask_db;
11 và
  1. CREATE DATABASE flask_db;
12 từ gói
  1. CREATE DATABASE flask_db;
13. Bạn thực hiện một phiên bản ứng dụng Flask được gọi là
  1. CREATE DATABASE flask_db;
14.

Bạn xác định một hàm gọi là

  1. CREATE DATABASE flask_db;
15, mở kết nối với cơ sở dữ liệu
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 bằng cách sử dụng người dùng và mật khẩu bạn lưu trữ trong các biến môi trường
  1. pip install Flask psycopg2-binary
2 và
  1. pip install Flask psycopg2-binary
3 của bạn. Hàm trả về đối tượng kết nối
  1. CREATE DATABASE flask_db;
19 mà bạn sẽ sử dụng để truy cập cơ sở dữ liệu.

Sau đó, bạn tạo một tuyến đường chính

  1. CREATE DATABASE flask_db;
20 và chức năng xem
  1. CREATE DATABASE flask_db;
21 bằng cách sử dụng trình trang trí
  1. CREATE DATABASE flask_db;
22. Trong chức năng xem
  1. CREATE DATABASE flask_db;
21, bạn mở kết nối cơ sở dữ liệu bằng hàm
  1. CREATE DATABASE flask_db;
15, bạn tạo một con trỏ và thực hiện câu lệnh
  1. CREATE DATABASE flask_db;
25 SQL để có tất cả các cuốn sách trong cơ sở dữ liệu. Bạn sử dụng phương thức
  1. CREATE DATABASE flask_db;
26 để lưu dữ liệu trong một biến gọi là
  1. \q
5. Sau đó, bạn đóng con trỏ và kết nối. Cuối cùng, bạn trả lại một cuộc gọi cho chức năng
  1. CREATE DATABASE flask_db;
12 để hiển thị một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
29 Chuyển cho nó danh sách các cuốn sách bạn lấy từ cơ sở dữ liệu trong biến
  1. \q
5.

Để hiển thị các cuốn sách bạn có trong cơ sở dữ liệu của mình trên trang Index, trước tiên bạn sẽ tạo một mẫu cơ sở, sẽ có tất cả các mẫu HTML cơ bản mà các mẫu khác cũng sẽ sử dụng để tránh lặp lại mã. Sau đó, bạn sẽ tạo tệp mẫu

  1. CREATE DATABASE flask_db;
29 mà bạn đã hiển thị trong hàm
  1. CREATE DATABASE flask_db;
21 của mình. Để tìm hiểu thêm về các mẫu, hãy xem cách sử dụng các mẫu trong ứng dụng bình.

Tạo thư mục

  1. CREATE DATABASE flask_db;
33, sau đó mở một mẫu mới có tên là
  1. CREATE DATABASE flask_db;
34:

  1. CREATE DATABASE flask_db;
8

Thêm mã sau bên trong tệp

  1. CREATE DATABASE flask_db;
34:

flask_app/templates/base.html

  1. CREATE DATABASE flask_db;
9

Lưu và đóng tập tin.

Tại đây, bạn nhập mô -đun

  1. \q
6, thư viện
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7 và lớp
  1. CREATE DATABASE flask_db;
11 và
  1. CREATE DATABASE flask_db;
12 từ gói
  1. CREATE DATABASE flask_db;
13. Bạn thực hiện một phiên bản ứng dụng Flask được gọi là
  1. CREATE DATABASE flask_db;
14.About page if you choose to include one in your application.

Bạn xác định một hàm gọi là

  1. CREATE DATABASE flask_db;
15, mở kết nối với cơ sở dữ liệu
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 bằng cách sử dụng người dùng và mật khẩu bạn lưu trữ trong các biến môi trường
  1. pip install Flask psycopg2-binary
2 và
  1. pip install Flask psycopg2-binary
3 của bạn. Hàm trả về đối tượng kết nối
  1. CREATE DATABASE flask_db;
19 mà bạn sẽ sử dụng để truy cập cơ sở dữ liệu.

  1. CREATE USER sammy WITH PASSWORD 'password';
0

Sau đó, bạn tạo một tuyến đường chính

  1. CREATE DATABASE flask_db;
20 và chức năng xem
  1. CREATE DATABASE flask_db;
21 bằng cách sử dụng trình trang trí
  1. CREATE DATABASE flask_db;
22. Trong chức năng xem
  1. CREATE DATABASE flask_db;
21, bạn mở kết nối cơ sở dữ liệu bằng hàm
  1. CREATE DATABASE flask_db;
15, bạn tạo một con trỏ và thực hiện câu lệnh
  1. CREATE DATABASE flask_db;
25 SQL để có tất cả các cuốn sách trong cơ sở dữ liệu. Bạn sử dụng phương thức
  1. CREATE DATABASE flask_db;
26 để lưu dữ liệu trong một biến gọi là
  1. \q
5. Sau đó, bạn đóng con trỏ và kết nối. Cuối cùng, bạn trả lại một cuộc gọi cho chức năng
  1. CREATE DATABASE flask_db;
12 để hiển thị một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
29 Chuyển cho nó danh sách các cuốn sách bạn lấy từ cơ sở dữ liệu trong biến
  1. \q
5.

flask_app/templates/index.html

  1. CREATE USER sammy WITH PASSWORD 'password';
1

Lưu và đóng tập tin.

Tại đây, bạn nhập mô -đun

  1. \q
6, thư viện
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
7 và lớp
  1. CREATE DATABASE flask_db;
11 và
  1. CREATE DATABASE flask_db;
12 từ gói
  1. CREATE DATABASE flask_db;
13. Bạn thực hiện một phiên bản ứng dụng Flask được gọi là
  1. CREATE DATABASE flask_db;
14.

Bạn xác định một hàm gọi là

  1. CREATE DATABASE flask_db;
15, mở kết nối với cơ sở dữ liệu
  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
9 bằng cách sử dụng người dùng và mật khẩu bạn lưu trữ trong các biến môi trường
  1. pip install Flask psycopg2-binary
2 và
  1. pip install Flask psycopg2-binary
3 của bạn. Hàm trả về đối tượng kết nối
  1. CREATE DATABASE flask_db;
19 mà bạn sẽ sử dụng để truy cập cơ sở dữ liệu.

Sau đó, bạn tạo một tuyến đường chính

  1. CREATE DATABASE flask_db;
20 và chức năng xem
  1. CREATE DATABASE flask_db;
21 bằng cách sử dụng trình trang trí
  1. CREATE DATABASE flask_db;
22. Trong chức năng xem
  1. CREATE DATABASE flask_db;
21, bạn mở kết nối cơ sở dữ liệu bằng hàm
  1. CREATE DATABASE flask_db;
15, bạn tạo một con trỏ và thực hiện câu lệnh
  1. CREATE DATABASE flask_db;
25 SQL để có tất cả các cuốn sách trong cơ sở dữ liệu. Bạn sử dụng phương thức
  1. CREATE DATABASE flask_db;
26 để lưu dữ liệu trong một biến gọi là
  1. \q
5. Sau đó, bạn đóng con trỏ và kết nối. Cuối cùng, bạn trả lại một cuộc gọi cho chức năng
  1. CREATE DATABASE flask_db;
12 để hiển thị một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
29 Chuyển cho nó danh sách các cuốn sách bạn lấy từ cơ sở dữ liệu trong biến
  1. \q
5.

  1. CREATE USER sammy WITH PASSWORD 'password';
2

Để hiển thị các cuốn sách bạn có trong cơ sở dữ liệu của mình trên trang Index, trước tiên bạn sẽ tạo một mẫu cơ sở, sẽ có tất cả các mẫu HTML cơ bản mà các mẫu khác cũng sẽ sử dụng để tránh lặp lại mã. Sau đó, bạn sẽ tạo tệp mẫu

  1. CREATE DATABASE flask_db;
29 mà bạn đã hiển thị trong hàm
  1. CREATE DATABASE flask_db;
21 của mình. Để tìm hiểu thêm về các mẫu, hãy xem cách sử dụng các mẫu trong ứng dụng bình.

  1. CREATE DATABASE flask_db;
0

Tạo thư mục

  1. CREATE DATABASE flask_db;
33, sau đó mở một mẫu mới có tên là
  1. CREATE DATABASE flask_db;
34:

  1. CREATE USER sammy WITH PASSWORD 'password';
4

Thêm mã sau bên trong tệp

  1. CREATE DATABASE flask_db;
34:

  1. CREATE USER sammy WITH PASSWORD 'password';
5

Mẫu cơ sở này có tất cả các nồi hơi HTML mà bạn sẽ cần phải sử dụng lại trong các mẫu khác của bạn. Khối

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
5 sẽ được thay thế để đặt tiêu đề cho mỗi trang và khối
  1. CREATE DATABASE flask_db;
37 sẽ được thay thế bằng nội dung của mỗi trang. Thanh điều hướng có hai liên kết, một cho trang chỉ mục nơi bạn sử dụng hàm trợ giúp
  1. CREATE DATABASE flask_db;
38 để liên kết với chức năng xem
  1. CREATE DATABASE flask_db;
21 và một cho một trang Giới thiệu nếu bạn chọn đưa một vào ứng dụng của mình.

Hướng dẫn how do i connect postgresql database to python flask? - làm cách nào để kết nối cơ sở dữ liệu postgresql với bình python?

Tiếp theo, mở một mẫu gọi là

  1. CREATE DATABASE flask_db;
29. Đây là mẫu bạn tham chiếu trong tệp
  1. CREATE DATABASE flask_db;
07:

Bước 5 - Thêm sách mới

Trong bước này, bạn sẽ tạo một tuyến đường mới để thêm sách và đánh giá mới vào cơ sở dữ liệu.

Bạn sẽ thêm một trang với một biểu mẫu web nơi người dùng nhập tiêu đề sách, tác giả sách, số lượng trang và đánh giá sách.

Để máy chủ phát triển chạy và mở một cửa sổ thiết bị đầu cuối mới.

Đầu tiên, hãy mở tệp

  1. CREATE DATABASE flask_db;
07 của bạn:

  1. CREATE DATABASE flask_db;
6

Để xử lý biểu mẫu web, bạn sẽ cần nhập một vài thứ từ gói

  1. CREATE DATABASE flask_db;
13:

  • Đối tượng toàn cầu
    1. CREATE DATABASE flask_db;
    57 để truy cập dữ liệu được gửi.
  • Hàm
    1. CREATE DATABASE flask_db;
    38 để tạo URL.
  • Hàm
    1. CREATE DATABASE flask_db;
    59 để chuyển hướng người dùng đến trang chỉ mục sau khi thêm một cuốn sách vào cơ sở dữ liệu.

Thêm các bản nhập này vào dòng đầu tiên trong tệp:

flask_app/app.py

  1. CREATE USER sammy WITH PASSWORD 'password';
7

Sau đó thêm tuyến sau ở cuối tệp

  1. CREATE DATABASE flask_db;
07:

flask_app/app.py

  1. CREATE USER sammy WITH PASSWORD 'password';
8

Lưu và đóng tập tin.

Trong tuyến đường này, bạn chuyển bộ tuple

  1. CREATE DATABASE flask_db;
61 cho tham số
  1. CREATE DATABASE flask_db;
62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường
  1. CREATE DATABASE flask_db;
63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.

Mở mẫu

  1. CREATE DATABASE flask_db;
64 mới:

  1. CREATE USER sammy WITH PASSWORD 'password';
9

Thêm mã sau vào nó:

flask_app/templates/create.html

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
0

Lưu và đóng tập tin.

Trong tuyến đường này, bạn chuyển bộ tuple

  1. CREATE DATABASE flask_db;
61 cho tham số
  1. CREATE DATABASE flask_db;
62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường
  1. CREATE DATABASE flask_db;
63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.

Mở mẫu

  1. CREATE DATABASE flask_db;
64 mới:

Thêm mã sau vào nó:

Bạn mở rộng mẫu cơ sở, đặt tiêu đề làm tiêu đề và sử dụng thẻ

  1. CREATE DATABASE flask_db;
66 với thuộc tính
  1. CREATE DATABASE flask_db;
67 được đặt thành
  1. CREATE DATABASE flask_db;
68 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST.Submit button at the end of the form.

Bạn có một trường văn bản có tên

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
5, mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường
  1. CREATE DATABASE flask_db;
63 của bạn.

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
1

Bạn có một trường văn bản cho tác giả, một trường số cho số trang và khu vực văn bản để xem xét sách.Add a New Book page with an input field for a book title, one for its author, and one for the number of pages the book has, a text area for the book’s review, and a Submit button.

Hướng dẫn how do i connect postgresql database to python flask? - làm cách nào để kết nối cơ sở dữ liệu postgresql với bình python?

Cuối cùng, bạn có một nút gửi ở cuối biểu mẫu.

Bây giờ, với máy chủ phát triển đang chạy, hãy sử dụng trình duyệt của bạn để điều hướng đến tuyến đường

  1. CREATE DATABASE flask_db;
63:

  1. CREATE DATABASE flask_db;
6

Bạn sẽ thấy một trang Sách mới với trường đầu vào cho một tiêu đề sách, một cho tác giả của nó và một cho số trang mà cuốn sách có, một khu vực văn bản để đánh giá sách và một nút gửi.

flask_app/app.py

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
3

Lưu và đóng tập tin.

Trong tuyến đường này, bạn chuyển bộ tuple

  1. CREATE DATABASE flask_db;
61 cho tham số
  1. CREATE DATABASE flask_db;
62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường
  1. CREATE DATABASE flask_db;
63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.

Mở mẫu

  1. CREATE DATABASE flask_db;
64 mới:

Thêm mã sau vào nó:

Bạn mở rộng mẫu cơ sở, đặt tiêu đề làm tiêu đề và sử dụng thẻ

  1. CREATE DATABASE flask_db;
66 với thuộc tính
  1. CREATE DATABASE flask_db;
67 được đặt thành
  1. CREATE DATABASE flask_db;
68 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST.

Bạn có một trường văn bản có tên

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
5, mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường
  1. CREATE DATABASE flask_db;
63 của bạn.

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
1

Bạn có một trường văn bản cho tác giả, một trường số cho số trang và khu vực văn bản để xem xét sách.

Cuối cùng, bạn có một nút gửi ở cuối biểu mẫu.

Bây giờ, với máy chủ phát triển đang chạy, hãy sử dụng trình duyệt của bạn để điều hướng đến tuyến đường

  1. CREATE DATABASE flask_db;
63:

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
5

Bạn sẽ thấy một trang Sách mới với trường đầu vào cho một tiêu đề sách, một cho tác giả của nó và một cho số trang mà cuốn sách có, một khu vực văn bản để đánh giá sách và một nút gửi.

flask_app/templates/base.html

  1. GRANT ALL PRIVILEGES ON DATABASE flask_db TO sammy;
6

Lưu và đóng tập tin.

Trong tuyến đường này, bạn chuyển bộ tuple

  1. CREATE DATABASE flask_db;
61 cho tham số
  1. CREATE DATABASE flask_db;
62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường
  1. CREATE DATABASE flask_db;
63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên
  1. CREATE DATABASE flask_db;
64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.

Mở mẫu

  1. CREATE DATABASE flask_db;
64 mới:

Thêm mã sau vào nó:

Bạn mở rộng mẫu cơ sở, đặt tiêu đề làm tiêu đề và sử dụng thẻ CREATE DATABASE flask_db; 66 với thuộc tính CREATE DATABASE flask_db; 67 được đặt thành CREATE DATABASE flask_db; 68 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST.

Bạn có một trường văn bản có tên

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 psycopg2-binary-2.9.2
5, mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường
  1. CREATE DATABASE flask_db;
63 của bạn.

Bạn có một trường văn bản cho tác giả, một trường số cho số trang và khu vực văn bản để xem xét sách.

Làm thế nào để Python tích hợp với PostgreSQL?

Thiết lập kết nối bằng Python, bạn có thể tạo các kết nối mới bằng hàm Connect ().Điều này chấp nhận các tham số kết nối cơ bản như dbname, người dùng, mật khẩu, máy chủ, cổng và trả về một đối tượng kết nối.Sử dụng chức năng này, bạn có thể thiết lập kết nối với PostgreSQL.create new connections using the connect() function. This accepts the basic connection parameters such as dbname, user, password, host, port and returns a connection object. Using this function, you can establish a connection with the PostgreSQL.

Cơ sở dữ liệu nào là tốt nhất cho bình?

Flask có thể sử dụng SQLite và MySQL làm cơ sở dữ liệu phụ trợ.Chúng tôi khuyên bạn nên sử dụng SQLalchemy làm ORM với các cơ sở dữ liệu quan hệ này.SQLite and MySQL as a backend database. We recommend that you use SQLAlchemy as ORM with these relational databases.

Flask hỗ trợ cơ sở dữ liệu nào?

Cơ sở dữ liệu được hỗ trợ..
Drizzle..
Firebird..
Microsoft SQL Server ..
MySQL..
Oracle..
PostgreSQL..
SQLite..
Sybase..