Bài viết gần đây
-
-
Kết nối PostgreSQL trong notebook này đang đi theo flow nào?
Tháng 5 25, 2026 -
SQLAlchemy thực ra đang làm gì trong flow `DataFrame -> PostgreSQL`?
Tháng 5 25, 2026 -
Nếu phải mô tả khóa này bằng một câu, câu đó sẽ là gì?
Tháng 5 25, 2026 -
Vì sao khóa MT5 nâng cao cày commission không dạy kiểu Hello World?
Tháng 5 25, 2026
| Kết nối PostgreSQL trong notebook này đang đi theo flow nào?
Được viết bởi thanhdt vào ngày 25/05/2026 lúc 23:07 | 6 lượt xem
Code bám theo: Phu dao 5.2_Crypto Day du lieu ve PostgreSQL (20 nam).ipynb
Nếu bài 1 nói về vai trò của SQLAlchemy, thì bài 2 phải nói thẳng về flow kết nối: dữ liệu đi từ đâu, chuỗi kết nối được tạo thế nào, engine sinh ra để làm gì, và notebook đang đọc/ghi PostgreSQL theo đúng thứ tự ra sao.
Trong notebook này, phần kết nối PostgreSQL đi theo trình tự rất rõ:
Bước 1: khai báo thông tin kết nối
python
user = 'admin'
password = '1'
host = 'localhost'
port = '5432'
database = 'DataBTC'
Đây là 5 mảnh ghép tối thiểu để Python biết:
– đăng nhập bằng ai
– vào máy nào
– qua cổng nào
– truy cập database nào
Bước 2: tạo chuỗi kết nối
python
connection_string = f"postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}"
Chuỗi này rất đáng để người mới hiểu kỹ:
– postgresql = dialect database
– psycopg2 = driver
– user:password = thông tin xác thực
– host:port/database = địa chỉ và tên DB
Bước 3: tạo engine
python
engine = sqlalchemy.create_engine(connection_string)
engine là object trung tâm để:
– ghi dữ liệu với to_sql
– đọc dữ liệu với read_sql
Nghĩa là thay vì mỗi lần đọc/ghi lại viết logic kết nối từ đầu, notebook tạo ra một “cổng giao tiếp chuẩn” rồi dùng lại.
Bước 4: xác định bảng và schema
python
table_name = 'trading_data_crypto'
schema_name = 'public'
Đây là bước nhiều người mới hay bỏ qua. Không phải cứ kết nối DB là xong. Bạn còn phải xác định:
– ghi vào bảng nào
– bảng đó nằm trong schema nào
Bước 5: ghi dữ liệu
python
data.to_sql(table_name, con=engine, if_exists='append', index=False, schema=schema_name)
Notebook dùng append, nghĩa là:
– bảng vẫn giữ nguyên
– dữ liệu mới được nối thêm vào bảng hiện có
Bước 6: đọc dữ liệu ngược lại
Ở nửa sau notebook:
python
query = f"SELECT * FROM {schema}.trading_data_crypto"
data = pd.read_sql(query, con=engine)
Đây là bước rất quan trọng vì nó chứng minh pipeline không dừng ở chỗ “ghi được”. Nó còn kiểm tra:
– đọc lại có được không
– schema có đúng không
– dữ liệu trong DB có giữ đúng cấu trúc DataFrame mong muốn không
Flow kỹ thuật tóm tắt
text
user/password/host/port/database
-> connection_string
-> create_engine()
-> table + schema
-> to_sql(append)
-> read_sql(SELECT ...)
Insight kỹ thuật đáng nói
Kết nối database không phải một thao tác đơn lẻ. Nó là một flow hai chiều:
– ghi xuống được
– và đọc ngược lên được
Nếu chỉ to_sql() thành công mà read_sql() không ổn, hệ thống dữ liệu vẫn chưa hoàn chỉnh.
Pitfall kỹ thuật
- Notebook đang hardcode
user/password, cách này học thì dễ nhưng deploy thật thì không nên - Dùng
appendmà không có cơ chế deduplicate sẽ rất dễ nhân đôi dữ liệu - Tên bảng/schema đúng nhưng quyền user không đủ thì vẫn fail ở bước ghi
- Dữ liệu crypto có thể không thật sự đủ “20 năm” vì tuổi đời symbol trên sàn không đủ dài, nên query dài năm không có nghĩa là DB có dữ liệu từ ngày bạn mong muốn
Góc nhìn trader thực chiến: phần kết nối PostgreSQL là nền hạ tầng. Không có lớp này, dữ liệu chỉ là thứ chạy qua notebook rồi biến mất. Có lớp này, dữ liệu bắt đầu trở thành tài sản có thể lưu, truy vấn, lọc và dùng lại cho backtest hoặc chiến lược sau này.
Comment CONNECT nếu bạn muốn mình viết tiếp checklist kiểm tra kết nối PostgreSQL trước khi đẩy data thật.
Bài viết chia sẻ góc nhìn kỹ thuật và vận hành dữ liệu, không phải khuyến nghị đầu tư.