Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

nhập kết nối cơ sở dữ liệu của tôi với python

Có thể, nhưng không nên trộn lẫn mã và dữ liệu (bất kỳ loại nào - cấu hình, HTML, v.v.), vì ít nhất hai lý do:

  • Thiết kế - bạn kết thúc với cái gọi là khớp nối cao . Tình huống có rất nhiều yếu tố phụ thuộc, khó theo dõi và ứng dụng của bạn ngày càng khó sửa đổi.
  • Bảo mật - thông tin đăng nhập của bạn sớm hay muộn sẽ kết thúc trong một số kho lưu trữ hoặc kho lưu trữ sao lưu mã. Tệp cấu hình có thể được mã hóa bổ sung, tệp py thì không. Nếu đó là một ứng dụng web, thì việc hạn chế quyền truy cập vào một tệp cấu hình đơn lẻ, sau đó là tất cả các tệp py có thể có dữ liệu nhạy cảm sẽ dễ dàng hơn.

Bạn vẫn có thể tạo chức năng xử lý kết nối riêng biệt, dễ sử dụng này. Nhưng hãy di chuyển thông tin đăng nhập kết nối của bạn sang tệp cấu hình riêng biệt.

config.ini:

[mysqlDB]
host = '0.0.0.0'
db = 'test'
user = 'root'
pass = 'pswd'

Bạn có thể đọc cấu hình trong tệp py kết nối của mình hoặc làm cho nó toàn cầu hơn (tức là singleton?). Nếu bạn muốn đọc cấu hình trong tệp kết nối:

storage.py:

import configparser
import MySQLdb.cursors

config = configparser.ConfigParser()
config.read('config.ini')

def connect():
    return MySQLdb.connect(host = config['mysqlDB']['host'],
                           user = config['mysqlDB']['user'],
                           passwd = config['mysqlDB']['pass'],
                           db = config['mysqlDB']['db'])

Ví dụ sử dụng:

import storage

conn = storage.connect()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lưu trữ số tiền trong mysql

  2. Sử dụng phần mở rộng không gian MySQL để chọn các điểm bên trong vòng tròn

  3. Tắt priv an toàn để tải dữ liệu trên MySQL

  4. BIGINT (8) có phải là số nguyên lớn nhất mà MySQL có thể lưu trữ không?

  5. MySQL có khả năng chống lại cuộc tấn công SQL injection tốt hơn PostgreSQL (theo Perl / DBI) không?