Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zaimportuj moje połączenie z bazą danych za pomocą Pythona

Jest to możliwe, ale mieszanie kodu i danych (dowolnego rodzaju - konfiguracja, HTML itp.) nie jest dobrym pomysłem z co najmniej dwóch powodów:

  • Projekt - otrzymujesz tak zwane wysokie sprzęgło . Sytuacja, w której jest wiele zależności, trudna do naśladowania, a Twoja aplikacja jest coraz trudniejsza do zmodyfikowania.
  • Bezpieczeństwo — Twoje poświadczenia prędzej czy później trafią do jakiegoś archiwum lub repozytorium kopii zapasowej kodu. Plik konfiguracyjny może być dodatkowo zaszyfrowany, plik py nie. Jeśli jest to aplikacja internetowa, łatwiej jest ograniczyć dostęp do pojedynczego pliku konfiguracyjnego niż do wszystkich plików py, które mogą zawierać poufne dane.

Nadal możesz utworzyć tę oddzielną, łatwą w użyciu funkcję obsługi połączeń. Ale przenieś swoje dane uwierzytelniające połączenie do osobnego pliku konfiguracyjnego.

config.ini:

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

Możesz odczytać konfigurację w pliku py połączenia lub uczynić ją bardziej globalną (np. singleton?). Jeśli chcesz odczytać konfigurację z pliku połączenia:

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'])

Przykład użycia:

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. Jak poprawić podwójnie zakodowane ciągi znaków UTF-8 znajdujące się w polach MySQL utf8_general_ci?

  2. Znajdowanie wszystkich rodziców w tabeli mysql za pomocą pojedynczego zapytania (zapytanie rekurencyjne)

  3. Połączenie MySQL typu jeden-do-wielu z funkcją Group By zwraca tylko jedną obserwację

  4. Docker MYSQL '[2002] Połączenie odrzucone'

  5. Jak przywrócić z polecenia drop database za pomocą dziennika binarnego mysql?