Cách lấy dữ liệu từ cơ sở dữ liệu postgresql trong python?

Hướng dẫn Python PostgreSQL với mô-đun psycopg2 chỉ ra cách lập trình cơ sở dữ liệu PostgreSQL bằng Python với mô-đun psycopg2

PostgreSQL là một hệ thống cơ sở dữ liệu quan hệ đối tượng mã nguồn mở mạnh mẽ. Nó là một hệ thống quản lý cơ sở dữ liệu đa người dùng. Nó chạy trên nhiều nền tảng bao gồm Linux, FreeBSD, Solaris, Microsoft Windows và Mac OS X. PostgreSQL được phát triển bởi PostgreSQL Global Development Group

Mô-đun psycopg2

Có một số thư viện Python cho PostgreSQL. ngôn ngữ. Trong hướng dẫn này, chúng tôi sử dụng mô-đun

print(version)
5. Nó là một bộ điều hợp cơ sở dữ liệu PostgreSQL cho ngôn ngữ lập trình Python. Nó chủ yếu được triển khai trong C dưới dạng trình bao bọc
print(version)
6

$ pip install psycopg2

Chúng tôi cài đặt mô-đun

print(version)
5

Trong ví dụ mã đầu tiên, chúng tôi nhận được phiên bản của cơ sở dữ liệu PostgreSQL

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()

Trong chương trình, chúng tôi kết nối với cơ sở dữ liệu

print(version)
8 đã tạo trước đó. Chúng tôi thực thi một câu lệnh SQL trả về phiên bản của cơ sở dữ liệu PostgreSQL

import psycopg2

print(version)
5 là một mô-đun Python được sử dụng để hoạt động với cơ sở dữ liệu PostgreSQL

________số 8_______

Chúng tôi khởi tạo biến con thành

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
0. Trong trường hợp chúng tôi không thể tạo kết nối đến cơ sở dữ liệu (ví dụ: đĩa đầy), chúng tôi sẽ không xác định biến kết nối. Điều này sẽ dẫn đến một lỗi trong mệnh đề cuối cùng

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')

Phương thức

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
1 tạo một phiên cơ sở dữ liệu mới và trả về một đối tượng kết nối. Người dùng được tạo mà không cần mật khẩu. Trên localhost, chúng ta có thể bỏ tùy chọn mật khẩu. Nếu không, nó phải được chỉ định

cur = con.cursor()
cur.execute('SELECT version()')

Từ kết nối, chúng tôi nhận được đối tượng con trỏ. Con trỏ được sử dụng để duyệt qua các bản ghi từ tập kết quả. Chúng ta gọi phương thức

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
2 của con trỏ và thực thi câu lệnh SQL

version = cur.fetchone()[0]

Chúng tôi lấy dữ liệu. Vì chúng tôi chỉ truy xuất một bản ghi, nên chúng tôi gọi phương thức

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
3

print(version)

Chúng tôi in dữ liệu mà chúng tôi đã lấy ra bàn điều khiển

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

Trong trường hợp ngoại lệ, chúng tôi in thông báo lỗi và thoát khỏi chương trình với mã lỗi 1

finally:

    if con:
        con.close())

Trong bước cuối cùng, chúng tôi giải phóng tài nguyên

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
0

Trong ví dụ thứ hai, chúng ta lại lấy phiên bản của cơ sở dữ liệu PostgreSQL. Lần này chúng tôi sử dụng từ khóa

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
4

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
1

Chương trình trả về phiên bản hiện tại của cơ sở dữ liệu PostgreSQL. Với việc sử dụng từ khóa with. Mã nhỏ gọn hơn

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
2

Với từ khóa

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
4, Python tự động giải phóng tài nguyên. Nó cũng cung cấp xử lý lỗi

Python psycopg2 thực thi

Chúng tôi tạo bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 và chèn một số hàng vào đó.
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
2 thực hiện thao tác cơ sở dữ liệu (truy vấn hoặc lệnh)

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
3

Chương trình tạo bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 và chèn tám hàng vào bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
4

Câu lệnh SQL này tạo một bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 mới. Bảng có ba cột

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
5

Hai dòng này chèn hai chiếc xe vào bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
6

Chúng tôi xác minh dữ liệu bằng văn bản bằng công cụ

finally:

    if con:
        con.close())
0

Phương thức

finally:

    if con:
        con.close())
1 là một phương thức thuận tiện để khởi chạy một thao tác cơ sở dữ liệu (truy vấn hoặc lệnh) đối với tất cả các bộ tham số hoặc ánh xạ được tìm thấy trong chuỗi được cung cấp. Chức năng này chủ yếu hữu ích cho các lệnh cập nhật cơ sở dữ liệu. bất kỳ tập kết quả nào được trả về bởi truy vấn đều bị loại bỏ

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
7

Ví dụ này loại bỏ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 nếu nó tồn tại và (tái) tạo nó

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
8

Câu lệnh SQL đầu tiên loại bỏ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 nếu nó tồn tại. Câu lệnh SQL thứ hai tạo bảng
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
9

Đây là truy vấn mà chúng tôi sử dụng

import psycopg2
0

Chúng tôi chèn tám hàng vào bảng bằng phương pháp

finally:

    if con:
        con.close())
1 tiện lợi. Tham số đầu tiên của phương thức này là một câu lệnh SQL được tham số hóa. Tham số thứ hai là dữ liệu, ở dạng một bộ của các bộ

Python psycopg2 id hàng được chèn lần cuối

print(version)
5 không hỗ trợ thuộc tính
finally:

    if con:
        con.close())
7. Để trả về id của hàng được chèn cuối cùng, chúng ta phải sử dụng mệnh đề
finally:

    if con:
        con.close())
8 của PostgreSQL

import psycopg2
1

Chương trình tạo một bảng

finally:

    if con:
        con.close())
9 mới và in Id của hàng được chèn vào cuối cùng

import psycopg2
2

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
00 tìm nạp tất cả các hàng (còn lại) của kết quả truy vấn, trả về chúng dưới dạng danh sách các bộ dữ liệu. Một danh sách trống được trả về nếu không còn bản ghi nào để tìm nạp

import psycopg2
3

Trong ví dụ này, chúng tôi lấy tất cả dữ liệu từ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

import psycopg2
4

Câu lệnh SQL này chọn tất cả dữ liệu từ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

import psycopg2
5

Phương thức

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
00 lấy tất cả các bản ghi. Nó trả về một tập kết quả. Về mặt kỹ thuật, nó là một bộ của các bộ. Mỗi bộ dữ liệu bên trong đại diện cho một hàng trong bảng

import psycopg2
6

Chúng tôi in dữ liệu ra bàn điều khiển, từng hàng

import psycopg2
7

Python tìm nạp psycopg2

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
3 trả về hàng tiếp theo của tập kết quả truy vấn, trả về một bộ hoặc
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
0 khi không có thêm dữ liệu

import psycopg2
8

Trong ví dụ này, chúng tôi kết nối với cơ sở dữ liệu và tìm nạp từng hàng của bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

import psycopg2
9

Chúng tôi truy cập dữ liệu từ vòng lặp while. Khi chúng tôi đọc hàng cuối cùng, vòng lặp kết thúc

con = None
0

Phương thức

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
3 trả về hàng tiếp theo từ bảng. Nếu không còn dữ liệu nào nữa, nó sẽ trả về
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
0. Trong trường hợp này, chúng tôi phá vỡ vòng lặp

con = None
1

Dữ liệu được trả về dưới dạng một tuple. Ở đây chúng tôi chọn các bản ghi từ Tuple. Đầu tiên là Id, thứ hai là tên xe và thứ ba là giá xe

Con trỏ mặc định truy xuất dữ liệu trong một bộ gồm nhiều bộ. Với con trỏ từ điển, dữ liệu được gửi dưới dạng từ điển Python. Sau đó, chúng ta có thể tham khảo dữ liệu theo tên cột của chúng

con = None
2

Trong ví dụ này, chúng tôi in nội dung của bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 bằng cách sử dụng con trỏ từ điển

con = None
3

Con trỏ từ điển được đặt trong mô-đun bổ sung

con = None
4

Chúng tôi tạo một

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
10

con = None
5

Dữ liệu được truy cập theo tên cột. Tên cột được gấp thành chữ thường trong PostgreSQL (trừ khi được trích dẫn) và phân biệt chữ hoa chữ thường. Do đó, chúng tôi phải cung cấp tên cột bằng chữ thường

Khi chúng tôi sử dụng các truy vấn được tham số hóa, chúng tôi sử dụng các trình giữ chỗ thay vì viết trực tiếp các giá trị vào các câu lệnh. Các truy vấn được tham số hóa tăng tính bảo mật và hiệu suất

Mô-đun Python

print(version)
5 hỗ trợ hai loại trình giữ chỗ. Định dạng printf ANSI C và định dạng mở rộng Python

con = None
6

Chúng tôi cập nhật giá của một chiếc xe. Trong ví dụ mã này, chúng tôi sử dụng trình giữ chỗ dấu chấm hỏi

con = None
7

Các ký tự (%s) là phần giữ chỗ cho các giá trị. Các giá trị được thêm vào trình giữ chỗ

con = None
8

Thuộc tính

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
12 trả về số hàng được cập nhật. Trong trường hợp của chúng tôi, một hàng đã được cập nhật

con = None
9

Giá xe đã được cập nhật. Chúng tôi kiểm tra sự thay đổi bằng công cụ

finally:

    if con:
        con.close())
0

Ví dụ thứ hai sử dụng các câu lệnh được tham số hóa với định dạng mở rộng Python

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
0

Chúng tôi chọn tên và giá của một chiếc ô tô bằng cách sử dụng câu lệnh tham số hóa

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
14

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
1

Các trình giữ chỗ được đặt tên bắt đầu bằng ký tự dấu hai chấm

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
2

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
15 là phần mở rộng psycopg2 cho API DB Python trả về chuỗi truy vấn sau khi liên kết đối số. Chuỗi được trả về chính xác là chuỗi sẽ được gửi đến cơ sở dữ liệu chạy phương thức
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
2 hoặc tương tự

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
3

Chương trình hiển thị một chuỗi truy vấn CHỌN sau khi liên kết các đối số với

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
15

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
4

Trong phần này, chúng ta sẽ chèn một hình ảnh vào cơ sở dữ liệu PostgreSQL

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
5

Đối với ví dụ này, chúng tôi tạo một bảng mới có tên là

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
18. Đối với hình ảnh, chúng tôi sử dụng kiểu dữ liệu
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
19. Nó cho phép lưu trữ các chuỗi nhị phân

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
6

Trong chương trình, chúng tôi đọc một hình ảnh từ thư mục làm việc hiện tại và viết nó vào bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
18 của cơ sở dữ liệu PostgreSQL
print(version)
8

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
7

Chúng tôi đọc dữ liệu nhị phân từ hệ thống tập tin. Chúng tôi có một hình ảnh JPEG được gọi là

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
22

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
8

Dữ liệu được mã hóa bằng cách sử dụng đối tượng

print(version)
5
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
24

con = psycopg2.connect(database='testdb', user='postgres',
    password='s$cret')
9

Câu lệnh SQL này được sử dụng để chèn hình ảnh vào cơ sở dữ liệu

Python psycopg2 đọc hình ảnh

Trong phần này, chúng ta sẽ thực hiện thao tác đảo ngược. Chúng tôi đọc một hình ảnh từ bảng cơ sở dữ liệu

cur = con.cursor()
cur.execute('SELECT version()')
0

Chúng tôi đọc dữ liệu hình ảnh từ bảng hình ảnh và ghi nó vào một tệp khác, mà chúng tôi gọi là

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
25

cur = con.cursor()
cur.execute('SELECT version()')
1

Chúng tôi mở một tệp nhị phân ở chế độ ghi. Dữ liệu từ cơ sở dữ liệu được ghi vào tệp

cur = con.cursor()
cur.execute('SELECT version()')
2

Hai dòng này chọn và lấy dữ liệu từ bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
18. Chúng tôi lấy dữ liệu nhị phân từ hàng đầu tiên

Siêu dữ liệu là thông tin về dữ liệu trong cơ sở dữ liệu. Siêu dữ liệu trong cơ sở dữ liệu PostgreSQL chứa thông tin về các bảng và cột, trong đó chúng tôi lưu trữ dữ liệu. Số hàng bị ảnh hưởng bởi câu lệnh SQL là siêu dữ liệu. Số lượng hàng và cột được trả về trong tập hợp kết quả cũng thuộc về siêu dữ liệu

Siêu dữ liệu trong PostgreSQL có thể được lấy bằng cách sử dụng thuộc tính

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
27 của đối tượng con trỏ hoặc từ bảng
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
28

Tiếp theo, chúng tôi in tất cả các hàng từ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 với tên cột của chúng

cur = con.cursor()
cur.execute('SELECT version()')
3

Chúng tôi in nội dung của bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 ra bàn điều khiển. Bây giờ, chúng tôi cũng bao gồm tên của các cột

cur = con.cursor()
cur.execute('SELECT version()')
4

Chúng tôi lấy tên cột từ thuộc tính

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
27 của đối tượng con trỏ

cur = con.cursor()
cur.execute('SELECT version()')
5

Dòng này in ba tên cột của bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

Chúng tôi in các hàng bằng vòng lặp for. Dữ liệu được căn chỉnh theo tên cột

cur = con.cursor()
cur.execute('SELECT version()')
6

Trong ví dụ sau, chúng tôi liệt kê tất cả các bảng trong cơ sở dữ liệu

print(version)
8

cur = con.cursor()
cur.execute('SELECT version()')
7

Ví dụ mã in tất cả các bảng có sẵn trong cơ sở dữ liệu hiện tại ra thiết bị đầu cuối

cur = con.cursor()
cur.execute('SELECT version()')
8

Tên bảng được lưu trữ bên trong hệ thống bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
28

cur = con.cursor()
cur.execute('SELECT version()')
9

Đây là những bảng trên hệ thống của chúng tôi

Python psycopg2 xuất và nhập dữ liệu

Chúng tôi có thể xuất và nhập dữ liệu bằng cách sử dụng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
35 và
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
36

version = cur.fetchone()[0]
0

Ví dụ mã sao chép dữ liệu từ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 vào tệp
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
38

version = cur.fetchone()[0]
1

Chúng tôi mở một tệp nơi chúng tôi ghi dữ liệu từ bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

version = cur.fetchone()[0]
2

Phương thức

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
35 sao chép dữ liệu từ bảng
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 vào tệp đã mở. Các cột được phân tách bằng ký tự
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
42

version = cur.fetchone()[0]
3

Đây là nội dung của tệp

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

Bây giờ chúng ta sẽ thực hiện một thao tác ngược lại. Chúng tôi nhập bảng đã kết xuất trở lại vào bảng cơ sở dữ liệu

version = cur.fetchone()[0]
4

Chúng tôi xóa dữ liệu khỏi bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6

version = cur.fetchone()[0]
5

Trong chương trình, chúng tôi đọc nội dung của tệp

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 và sao chép nó trở lại bảng xe ô tô

version = cur.fetchone()[0]
6

Chúng tôi mở tệp

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
38 để đọc và sao chép nội dung vào bảng
except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6. Những thay đổi được cam kết

version = cur.fetchone()[0]
7

Đầu ra cho thấy rằng chúng tôi đã tạo lại thành công bảng

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)
6 đã lưu

Giao dịch là một đơn vị nguyên tử của hoạt động cơ sở dữ liệu đối với dữ liệu trong một hoặc nhiều cơ sở dữ liệu. Tác động của tất cả các câu lệnh SQL trong một giao dịch có thể được cam kết hoàn toàn với cơ sở dữ liệu hoặc tất cả được khôi phục

Trong các giao dịch mô-đun psycopg2 được xử lý bởi lớp kết nối. Lệnh đầu tiên của con trỏ kết nối bắt đầu một giao dịch. (Chúng ta không cần phải đính kèm các lệnh SQL của mình bằng các câu lệnh

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
49 và
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
50 để tạo giao dịch. Điều này được xử lý tự động bởi
print(version)
5. ) Các lệnh sau được thực thi trong ngữ cảnh của giao dịch mới này. Trong trường hợp có lỗi, giao dịch bị hủy bỏ và không có lệnh nào khác được thực hiện cho đến khi phương thức
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
52

Tài liệu về mô-đun

print(version)
5 nói rằng kết nối chịu trách nhiệm chấm dứt giao dịch của nó, gọi phương thức
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
54 hoặc
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
52. Các thay đổi đã cam kết ngay lập tức được thực hiện liên tục vào cơ sở dữ liệu. Đóng kết nối bằng phương pháp
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
56 hoặc hủy đối tượng kết nối (sử dụng del hoặc để nó nằm ngoài phạm vi) sẽ dẫn đến một cuộc gọi ngầm
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
52

Mô-đun

print(version)
5 cũng hỗ trợ chế độ tự động cam kết, trong đó tất cả các thay đổi đối với bảng đều có hiệu lực ngay lập tức. Để chạy ở chế độ autocommit, chúng ta đặt thuộc tính
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
59 của đối tượng kết nối thành
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
60

version = cur.fetchone()[0]
8

Chúng tôi tạo bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
61 và cố gắng điền dữ liệu vào bảng. Tuy nhiên, như chúng ta sẽ thấy, dữ liệu sẽ không được cam kết

version = cur.fetchone()[0]
9

Phương pháp

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
54 được nhận xét. Nếu chúng ta bỏ ghi chú dòng, dữ liệu sẽ được ghi vào bảng

print(version)
0

Khối

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
63 luôn được thực thi. Nếu chúng tôi chưa thực hiện các thay đổi và không có lỗi xảy ra (điều này sẽ khôi phục các thay đổi) thì giao dịch vẫn được mở. Kết nối được đóng bằng phương thức
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
56 và giao dịch bị chấm dứt bằng một cuộc gọi ngầm đến phương thức
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
52

print(version)
1

Chỉ sau khi chúng ta bỏ ghi chú dòng, bảng

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
61 mới được tạo

Python psycopg2 autocommit

Trong chế độ autocommit, một câu lệnh SQL được thực thi ngay lập tức

print(version)
2

Trong ví dụ này, chúng tôi kết nối với cơ sở dữ liệu ở chế độ tự động xác nhận. Chúng tôi không gọi các phương thức

#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
54 cũng như
#!/usr/bin/python
# -*- coding: utf-8 -*-

import psycopg2
import sys

con = None

try:

    con = psycopg2.connect(database='testdb', user='postgres',
        password='s$cret')

    cur = con.cursor()
    cur.execute('SELECT version()')

    version = cur.fetchone()[0]
    print(version)

except psycopg2.DatabaseError as e:

    print(f'Error {e}')
    sys.exit(1)

finally:

    if con:
        con.close()
52

Làm cách nào để gửi dữ liệu từ PostgreSQL sang Python?

Đầu tiên, kết nối với máy chủ cơ sở dữ liệu PostgreSQL bằng cách gọi hàm connect() của mô-đun psycopg. .
kết nối = psycopg2. kết nối (dsn).
cong = conn. con trỏ().
hay gây. thực thi (sql, (giá trị1, giá trị2)).
id = cong. tìm nạp () [0].
liên kết. làm().
hay gây. đóng () kết nối. đóng()

Làm cách nào để tìm nạp dữ liệu từ cơ sở dữ liệu PostgreSQL trong Flask?

Làm 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 PostgreSQL và người dùng. .
Bước 2 — Cài đặt Flask và psycopg2. .
Bước 3 — Thiết lập cơ sở dữ liệu. .
Bước 4 — Trưng bày Sách. .
Bước 5 — Thêm sách mới

Làm cách nào để đọc dữ liệu từ postgres trong gấu trúc?

Dữ liệu từ bảng PostgreSQL có thể được đọc và tải vào DataFrame của gấu trúc bằng cách gọi phương thức DataFrame. read_sql() và chuyển kết nối cơ sở dữ liệu thu được từ SQLAlchemy Engine dưới dạng tham số .

Làm cách nào để chạy truy vấn PostgreSQL trong Python?

Quy trình .
Nhập mô-đun trong tập lệnh Python. nhập psycopg2
Tạo kết nối tới cơ sở dữ liệu PostgreSQL bằng cách chuyển người dùng/mật khẩu thích hợp vào chuỗi kết nối sau. .
Xác định một tham số để truy cập phương thức con trỏ. .
Tạo một chuỗi truy vấn và chuyển đến phương thức con trỏ. .
Tạo vòng lặp for và in kết quả