Snowflake Python Connector liên kết riêng

Nếu bạn đang đọc bài đăng này thì bạn có thể biết về cơ sở dữ liệu bông tuyết. Nó là một kho dữ liệu dựa trên điện toán đám mây hỗ trợ SQL cho các hoạt động của nó. Nó đang trở nên cực kỳ phổ biến nhờ khả năng mở rộng, hỗ trợ đa ngôn ngữ, khả năng xử lý dữ liệu lớn và danh sách này tiếp tục. Nó tương thích với các dịch vụ web của Amazon, Microsoft Azure và Google Cloud Platform

Hình ảnh được lấy từ https. //www. bông tuyết. com/

Trong bài viết này, trọng tâm chính của chúng tôi không phải là về DB bông tuyết ở đây mà là kết nối của bông tuyết với python và một số lỗi mà chúng tôi gặp phải khi kết nối bông tuyết với python

Các cách khác nhau để kết nối Python với Snowflake DB

Ở đây tôi đã đưa ra một cái nhìn tổng quan nhanh về cách chúng ta có thể kết nối bông tuyết với python bằng trình kết nối bông tuyết, công cụ SQLAlchemy và khóa riêng. Tôi cũng đã cung cấp các tài liệu tham khảo [từ tài liệu về bông tuyết] ở cuối bài viết nếu bạn muốn khám phá thêm về chủ đề này. Hãy để chúng tôi kiểm tra các cách kết nối khác nhau một cách chi tiết

Kết nối Python với Snowflake DB bằng Trình kết nối bông tuyết với xác thực trình duyệt bên ngoài

Trước hết, chúng ta cần cài đặt trình kết nối python được gấu trúc hỗ trợ bằng lệnh bên dưới thông qua sổ ghi chép Jupyter

!pip install snowflake-connector-python[pandas]

Nếu bạn đang làm việc trên môi trường của khách hàng thì bạn cần cung cấp các chi tiết bên dưới để kết nối python của bạn với snowflake DB. Một điểm quan trọng cần lưu ý ở đây là mật khẩu không bắt buộc trong trường hợp đăng nhập SSO khi chúng tôi cung cấp trình xác thực là 'trình duyệt bên ngoài'. Google Chrome là trình duyệt tương thích nhất cho thao tác này

import snowflake.connector
import pandas as pd
import numpy as np
ctx = snowflake.connector.connect[
    account = '',
    user = '',
    schema = '',
    warehouse='',
    role = '',
    authenticator='externalbrowser',
]
cur = ctx.cursor[]

Bây giờ chúng ta có thể thực hiện nhiều thao tác như đọc hoặc ghi dữ liệu từ snowflake sang python và ngược lại với sự trợ giúp của đối tượng con trỏ này

Kết nối Python với Snowflake DB Sử dụng Snowflake Sqlalchemy với xác thực trình duyệt bên ngoài

Vì chúng tôi đã cài đặt trình kết nối python trước đó, bây giờ chúng tôi sẽ cài đặt gói Snowflake SQLAlchemy bằng lệnh bên dưới thông qua sổ ghi chép Jupyter

!pip install --upgrade snowflake-sqlalchemy

Giả sử bạn đang làm việc trong môi trường của máy khách và sử dụng xác thực trình duyệt bên ngoài SSO bên dưới truy vấn sẽ thuận tiện cho việc kết nối

import pandas as pd
import numpy as np
from sqlalchemy import create_engine
from snowflake.sqlalchemy import URL
url = URL[
    account = '',
    user = '',
    database = ' ,
    schema = '',
    warehouse= '',
    role = '',
    authenticator='externalbrowser',
]
engine = create_engine[url]
connection = engine.connect[]
  • Hoạt động đọc và ghi dữ liệu

Bây giờ chúng ta có thể tìm nạp dữ liệu từ bảng DB bông tuyết trong khung dữ liệu python thông qua các lệnh đơn giản bên dưới

query = '''select * from '''
data = pd.read_sql[query, connection]

Tương tự, chúng ta cũng có thể ghi dữ liệu python vào bảng bông tuyết như bên dưới. Thao tác này sẽ cắt bớt và tải bảng bông tuyết. Chúng tôi có thể sử dụng 'chắp thêm' thay cho 'thay thế' nếu chúng tôi muốn tải delta

data.to_sql['', engine, if_exists='replace', index=False, index_label=None]
  • Ảnh chụp kết nối bằng cách sử dụng 'trình duyệt bên ngoài' và tải dữ liệu

Trong ảnh chụp nhanh bên dưới, bạn có thể xem cách kết nối python với bông tuyết bằng xác thực trình duyệt bên ngoài. Chi tiết kết nối bị ẩn vì đó là dữ liệu dành riêng cho khách hàng

Kết nối Python với Snowflake DB bằng cách sử dụng Xác thực cặp khóa và sử dụng lại kết nối hiện có để tạo một công cụ cho SQLAlchemy

Ngoài những chi tiết thông thường [đ. g. tên tài khoản, người dùng, cơ sở dữ liệu, v.v.] chúng tôi cần hai chi tiết quan trọng khác. Một trong số đó là đường dẫn mà chúng tôi đã lưu trữ khóa riêng trong bông tuyết và thứ hai là mật khẩu để truy cập khóa.  

Dưới đây là mã python được yêu cầu khi chúng ta cần kết nối bông tuyết bằng khóa riêng được tạo trước đó trong môi trường bông tuyết. Chúng tôi cũng sẽ sử dụng kết nối này để tạo một công cụ SQLAlchemy do đó sẽ dễ dàng đọc hoặc ghi dữ liệu bằng truy vấn SQL.  

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives.asymmetric import dsa
from cryptography.hazmat.primitives import serialization
with open[path, "rb"] as key:
    p_key= serialization.load_pem_private_key[key.read[],password=''.encode[],backend=default_backend[]]
    pkb = p_key.private_bytes[encoding=serialization.Encoding.DER,
                              format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption[]]
    ctx = snowflake.connector.connect[user=user,account=account,private_key=pkb,warehouse=warehouse,database=database]
if ctx:
    eng = sqlalchemy.create_engine[url,poolclass=sqlalchemy.pool.StaticPool,creator = lambda:ctx]
else:
    eng=sqlalchemy.create_engine[url,creator=get_connect]
con = eng.connect[]
url = URL[account = '',user = '',database = '',warehouse= '',role = '']

Lỗi khi kết nối cặp khóa

Trong trường hợp bạn gặp thông báo lỗi dưới đây sau khi thực thi đoạn mã trên

"Không thể deserialize dữ liệu quan trọng"

Chắc chắn, bạn cần kiểm tra đường dẫn bạn đã cung cấp nơi chứa khóa RSA của bạn. Đôi khi, khóa của bạn bị hỏng hoặc không truy cập được vì bất kỳ lý do gì thì bạn cũng có thể gặp lỗi trên. Trong trường hợp đó, bạn có thể thông báo cho DBA bông tuyết của mình để tạo khóa RSA mới

Chúng tôi có thể tìm nạp dữ liệu từ các bảng bông tuyết và lưu trữ chúng dưới dạng khung dữ liệu gấu trúc bằng mã bên dưới

cur = ctx.cursor[]
query = '''select * from '''
cur.execute[query]
data = pd.DataFrame.from_records[iter[cur], columns=[x[0] for x in cur.description]]
cur.close[]

Ghi chú kết thúc

Luôn nhớ đóng con trỏ khi bạn đã thực hiện tất cả các lệnh liên quan đến con trỏ đó và bạn không cần kết nối nữa

Trong trường hợp chúng ta cần truy cập hai bảng lược đồ khác nhau thì chúng ta cũng có thể tạo hai con trỏ khác nhau để thực hiện các truy vấn khác nhau liên quan đến hai bảng đó

Hy vọng bạn thấy bài viết này có giá trị trong nhiệm vụ kết nối Python và cơ sở dữ liệu Snowflake

Người giới thiệu

https. // tài liệu. bông tuyết. com/vi/user-guide/sqlalchemy. html

https. // tài liệu. bông tuyết. com/vi/user-guide/python-connector-pandas. html

https. // tài liệu. bông tuyết. com/en/user-guide/python-connector-example. html

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả

Tôi có thể kết nối Snowflake với Python không?

Snowflake Connector cho Python cung cấp giao diện để phát triển các ứng dụng Python có thể kết nối với Snowflake và thực hiện tất cả các hoạt động tiêu chuẩn . Nó cung cấp một giải pháp lập trình thay thế để phát triển các ứng dụng bằng Java hoặc C/C++ bằng trình điều khiển Snowflake JDBC hoặc ODBC.

Làm cách nào để cài đặt trình kết nối Bông tuyết trong Python?

Để cài đặt Snowflake Connector cho Python và các thư viện phụ thuộc. .
Xác định phiên bản Snowflake Connector cho Python mà bạn định cài đặt
To install the connector, run the following command: pip install snowflake-connector-python==.

Làm cách nào để lấy dữ liệu từ Snowflake bằng Python?

Trường hợp sử dụng. Truy xuất dữ liệu Coveo UA bằng Trình kết nối Python .
Bước 1. Cài đặt trình kết nối
Bước 2. Cài đặt gấu trúc
Bước 3. Kết nối với bông tuyết
Bước 4. Xác định một truy vấn SQL
Bước 5. Thực hiện truy vấn và thêm vào DataFrame
Bước 6. Xuất sang CSV
Thẩm quyền giải quyết

Liên kết riêng Snowflake là gì?

AWS PrivateLink là một dịch vụ AWS để tạo các điểm cuối VPC riêng cho phép kết nối trực tiếp, an toàn giữa AWS VPC của bạn và Snowflake VPC mà không cần đi qua Internet công cộng. The connectivity is for AWS VPCs in the same AWS region.

Chủ Đề