Làm cách nào chúng ta có thể kết nối chương trình Python với cơ sở dữ liệu?

MySQL là một trong những phổ biến nhất trên thị trường hiện nay. Nó chỉ xếp thứ hai sau Oracle DBMS trong Bảng xếp hạng DB-Engines năm nay. Vì hầu hết các ứng dụng phần mềm cần tương tác với dữ liệu ở một dạng nào đó, nên các ngôn ngữ lập trình như Python cung cấp các công cụ để lưu trữ và truy cập các nguồn dữ liệu này

Sử dụng các kỹ thuật được thảo luận trong hướng dẫn này, bạn sẽ có thể tích hợp hiệu quả cơ sở dữ liệu MySQL với ứng dụng Python. Bạn sẽ phát triển một cơ sở dữ liệu MySQL nhỏ cho hệ thống xếp hạng phim và tìm hiểu cách truy vấn nó trực tiếp từ mã Python của bạn

Đến cuối hướng dẫn này, bạn sẽ có thể

  • Xác định các tính năng độc đáo của MySQL
  • Kết nối ứng dụng của bạn với cơ sở dữ liệu MySQL
  • Truy vấn cơ sở dữ liệu để lấy dữ liệu cần thiết
  • Xử lý các ngoại lệ xảy ra khi truy cập cơ sở dữ liệu
  • Sử dụng các phương pháp hay nhất trong khi xây dựng các ứng dụng cơ sở dữ liệu

Để tận dụng tối đa hướng dẫn này, bạn nên có kiến ​​thức làm việc về các khái niệm Python như vòng lặp

cursor = connection.cursor[]
0, hàm, xử lý ngoại lệ và cài đặt các gói Python bằng cách sử dụng
cursor = connection.cursor[]
1. Bạn cũng nên có hiểu biết cơ bản về các hệ thống quản lý cơ sở dữ liệu quan hệ và các truy vấn SQL như
cursor = connection.cursor[]
2,
cursor = connection.cursor[]
3,
cursor = connection.cursor[]
4 và
cursor = connection.cursor[]
5

Tải xuống miễn phí. Nhận một chương mẫu từ Thủ thuật Python. Cuốn sách chỉ cho bạn các phương pháp hay nhất về Python với các ví dụ đơn giản mà bạn có thể áp dụng ngay lập tức để viết mã Pythonic + đẹp hơn

So sánh MySQL với các cơ sở dữ liệu SQL khác

SQL là viết tắt của Structured Query Language và là ngôn ngữ lập trình được sử dụng rộng rãi để quản lý cơ sở dữ liệu quan hệ. Bạn có thể đã nghe nói về các hương vị khác nhau của các DBMS dựa trên SQL. Những cái phổ biến nhất bao gồm MySQL, PostgreSQL, SQLite và SQL Server. Tất cả các cơ sở dữ liệu này đều tuân thủ các tiêu chuẩn SQL nhưng với các mức độ tuân thủ khác nhau

Là nguồn mở kể từ khi thành lập vào năm 1995, MySQL nhanh chóng trở thành công ty dẫn đầu thị trường trong số các giải pháp SQL. MySQL cũng là một phần của hệ sinh thái Oracle. Mặc dù chức năng cốt lõi của nó hoàn toàn miễn phí, nhưng cũng có một số tiện ích bổ sung trả phí. Hiện tại, MySQL được sử dụng bởi tất cả các công ty công nghệ lớn, bao gồm Google, LinkedIn, Uber, Netflix, Twitter và các công ty khác

Ngoài một cộng đồng nguồn mở lớn để hỗ trợ, còn có nhiều lý do khác cho sự thành công của MySQL

  1. Dễ cài đặt. MySQL được thiết kế thân thiện với người dùng. Việc thiết lập cơ sở dữ liệu MySQL khá đơn giản và một số công cụ của bên thứ ba có sẵn rộng rãi, như phpMyAdmin, tiếp tục hợp lý hóa quy trình thiết lập. MySQL có sẵn cho tất cả các hệ điều hành chính, bao gồm Windows, macOS, Linux và Solaris

  2. Tốc độ. MySQL nổi tiếng là một giải pháp cơ sở dữ liệu cực kỳ nhanh. Nó có dấu chân tương đối nhỏ hơn và cực kỳ có thể mở rộng trong thời gian dài

  3. Đặc quyền người dùng và bảo mật. MySQL đi kèm với một tập lệnh cho phép bạn đặt mức bảo mật mật khẩu, chỉ định mật khẩu quản trị viên và thêm và xóa đặc quyền tài khoản người dùng. Tập lệnh này đơn giản hóa quy trình quản trị cho cổng quản lý người dùng lưu trữ web. Các DBMS khác, như PostgreSQL, sử dụng các tệp cấu hình phức tạp hơn để sử dụng

Mặc dù MySQL nổi tiếng về tốc độ và tính dễ sử dụng, nhưng bạn có thể nhận được nhiều tính năng nâng cao hơn với PostgreSQL. Ngoài ra, MySQL không hoàn toàn tuân thủ SQL và có một số giới hạn chức năng nhất định, chẳng hạn như không hỗ trợ cho mệnh đề

cursor = connection.cursor[]
6

Bạn cũng có thể gặp phải một số vấn đề với việc đọc và ghi đồng thời trong MySQL. Nếu phần mềm của bạn có nhiều người dùng ghi dữ liệu vào nó cùng một lúc thì PostgreSQL có thể là lựa chọn phù hợp hơn

Ghi chú. Để có sự so sánh sâu hơn về MySQL và PostgreSQL trong bối cảnh thế giới thực, hãy xem Tại sao Uber Engineering lại chuyển từ Postgres sang MySQL

SQL Server cũng là một DBMS rất phổ biến và được biết đến với độ tin cậy, hiệu quả và bảo mật. Nó được ưa thích bởi các công ty, đặc biệt là trong lĩnh vực ngân hàng, những người thường xuyên xử lý khối lượng công việc lưu lượng truy cập lớn. Đó là một giải pháp thương mại và là một trong những hệ thống tương thích nhất với các dịch vụ Windows

Năm 2010, khi Oracle mua lại Sun Microsystems và MySQL, nhiều người đã lo lắng về tương lai của MySQL. Vào thời điểm đó, Oracle là đối thủ cạnh tranh lớn nhất của MySQL. Các nhà phát triển lo ngại rằng đây là một sự tiếp quản thù địch từ Oracle với mục đích phá hủy MySQL

Một số nhà phát triển dẫn đầu bởi Michael Widenius, tác giả ban đầu của MySQL, đã tạo ra một nhánh của cơ sở mã MySQL và đặt nền tảng cho MariaDB. Mục đích là để đảm bảo quyền truy cập vào MySQL và giữ cho nó miễn phí mãi mãi

Đến nay, MariaDB vẫn được cấp phép GPL đầy đủ, giữ nó hoàn toàn trong phạm vi công cộng. Mặt khác, một số tính năng của MySQL chỉ khả dụng với giấy phép trả phí. Ngoài ra, MariaDB cung cấp một số tính năng cực kỳ hữu ích mà máy chủ MySQL không hỗ trợ, như SQL phân tán và lưu trữ dạng cột. Bạn có thể tìm thêm sự khác biệt giữa MySQL và MariaDB được liệt kê trên trang web của MariaDB

MySQL sử dụng cú pháp rất giống với SQL chuẩn. Tuy nhiên, có một số khác biệt đáng chú ý được đề cập trong tài liệu chính thức

Loại bỏ các quảng cáo

Cài đặt Máy chủ MySQL và Trình kết nối MySQL/Python

Bây giờ, để bắt đầu làm việc với hướng dẫn này, bạn cần thiết lập hai thứ. máy chủ MySQL và trình kết nối MySQL. Máy chủ MySQL sẽ cung cấp tất cả các dịch vụ cần thiết để xử lý cơ sở dữ liệu của bạn. Sau khi máy chủ hoạt động, bạn có thể kết nối ứng dụng Python của mình với nó bằng Trình kết nối MySQL/Python

Cài đặt máy chủ MySQL

Tài liệu chính thức nêu chi tiết cách được đề xuất để tải xuống và cài đặt máy chủ MySQL. Bạn sẽ tìm thấy hướng dẫn cho tất cả các hệ điều hành phổ biến, bao gồm Windows, macOS, Solaris, Linux, v.v.

Đối với Windows, cách tốt nhất là tải xuống MySQL Installer và để nó đảm nhận toàn bộ quá trình. Trình quản lý cài đặt cũng giúp bạn định cấu hình cài đặt bảo mật của máy chủ MySQL. Trên trang Tài khoản và Vai trò, bạn cần nhập mật khẩu cho tài khoản gốc [quản trị viên] và cũng có thể tùy ý thêm những người dùng khác với các đặc quyền khác nhau

Thiết lập tài khoản trình cài đặt MySQL

Mặc dù bạn phải chỉ định thông tin đăng nhập cho tài khoản gốc trong khi thiết lập, nhưng bạn có thể sửa đổi các cài đặt này sau này

Ghi chú. Hãy nhớ tên máy chủ, tên người dùng và mật khẩu vì chúng sẽ được yêu cầu để thiết lập kết nối với máy chủ MySQL sau này

Mặc dù bạn chỉ cần máy chủ MySQL cho hướng dẫn này, nhưng bạn cũng có thể thiết lập các công cụ hữu ích khác như MySQL Workbench bằng các trình cài đặt này. Nếu bạn không muốn cài đặt MySQL trực tiếp trong hệ điều hành của mình, thì triển khai MySQL trên Linux với Docker là một giải pháp thay thế thuận tiện

Cài đặt Trình kết nối MySQL/Python

Trình điều khiển cơ sở dữ liệu là một phần mềm cho phép ứng dụng kết nối và tương tác với hệ thống cơ sở dữ liệu. Các ngôn ngữ lập trình như Python cần một trình điều khiển đặc biệt trước khi chúng có thể nói chuyện với cơ sở dữ liệu từ một nhà cung cấp cụ thể

Các trình điều khiển này thường được lấy dưới dạng mô-đun của bên thứ ba. API cơ sở dữ liệu Python [DB-API] xác định giao diện tiêu chuẩn mà tất cả trình điều khiển cơ sở dữ liệu Python phải tuân thủ. Những chi tiết này được ghi lại trong PEP 249. Tất cả trình điều khiển cơ sở dữ liệu Python, chẳng hạn như sqlite3 cho SQLite, psycopg cho PostgreSQL và MySQL Connector/Python cho MySQL, hãy tuân theo các quy tắc triển khai này

Ghi chú. Tài liệu chính thức của MySQL sử dụng thuật ngữ trình kết nối thay vì trình điều khiển. Về mặt kỹ thuật, các trình kết nối chỉ được liên kết với việc kết nối với cơ sở dữ liệu, không tương tác với nó. Tuy nhiên, thuật ngữ này thường được sử dụng cho toàn bộ mô-đun truy cập cơ sở dữ liệu bao gồm trình kết nối và trình điều khiển.

Để duy trì tính nhất quán với tài liệu, bạn sẽ thấy thuật ngữ trình kết nối bất cứ khi nào MySQL được đề cập

Nhiều ngôn ngữ lập trình phổ biến có API cơ sở dữ liệu riêng. Ví dụ: Java có API Kết nối cơ sở dữ liệu Java [JDBC]. Nếu bạn cần kết nối một ứng dụng Java với cơ sở dữ liệu MySQL, thì bạn cần sử dụng trình kết nối JDBC của MySQL, tuân theo API JDBC

Tương tự, trong Python, bạn cần cài đặt trình kết nối Python MySQL để tương tác với cơ sở dữ liệu MySQL. Nhiều gói tuân theo các tiêu chuẩn DB-API, nhưng phổ biến nhất trong số đó là MySQL Connector/Python. Bạn có thể lấy nó với

cursor = connection.cursor[]
1

________số 8_______

cursor = connection.cursor[]
1 cài đặt trình kết nối dưới dạng mô-đun bên thứ ba trong môi trường ảo hiện đang hoạt động. Bạn nên thiết lập một môi trường ảo biệt lập cho dự án cùng với tất cả các thành phần phụ thuộc

Để kiểm tra xem quá trình cài đặt có thành công hay không, hãy nhập lệnh sau trên thiết bị đầu cuối Python của bạn

>>>

>>> import mysql.connector

Nếu đoạn mã trên thực thi không có lỗi, thì

cursor = connection.cursor[]
9 đã được cài đặt và sẵn sàng sử dụng. Nếu bạn gặp phải bất kỳ lỗi nào, hãy đảm bảo rằng bạn đang ở trong đúng môi trường ảo và bạn đang sử dụng đúng trình thông dịch Python

Đảm bảo rằng bạn đang cài đặt đúng gói

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
0, đây là gói triển khai Python thuần túy. Cẩn thận với các trình kết nối có tên tương tự nhưng hiện đã bị khấu hao như
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
1

Loại bỏ các quảng cáo

Thiết lập kết nối với máy chủ MySQL

MySQL là một hệ thống quản lý cơ sở dữ liệu dựa trên máy chủ. Một máy chủ có thể chứa nhiều cơ sở dữ liệu. Để tương tác với cơ sở dữ liệu, trước tiên bạn phải thiết lập kết nối với máy chủ. Quy trình làm việc chung của chương trình Python tương tác với cơ sở dữ liệu dựa trên MySQL như sau

  1. Kết nối với máy chủ MySQL
  2. Tạo cơ sở dữ liệu mới
  3. Kết nối với cơ sở dữ liệu mới được tạo hoặc hiện có
  4. Thực thi truy vấn SQL và tìm nạp kết quả
  5. Thông báo cho cơ sở dữ liệu nếu có bất kỳ thay đổi nào đối với bảng
  6. Đóng kết nối với máy chủ MySQL

Đây là quy trình công việc chung có thể khác nhau tùy thuộc vào từng ứng dụng. Nhưng bất kể ứng dụng có thể là gì, bước đầu tiên là kết nối cơ sở dữ liệu của bạn với ứng dụng của bạn

Thiết lập kết nối

Bước đầu tiên trong việc tương tác với máy chủ MySQL là thiết lập kết nối. Để làm điều này, bạn cần có

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
2 từ mô-đun
cursor = connection.cursor[]
9. Hàm này nhận các tham số như
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
4,
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
5 và
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
6 và trả về một đối tượng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
7. Bạn có thể nhận các thông tin đăng nhập này dưới dạng đầu vào từ người dùng và chuyển chúng tới
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
2

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]

Đoạn mã trên sử dụng thông tin đăng nhập đã nhập để thiết lập kết nối với máy chủ MySQL của bạn. Đổi lại, bạn nhận được một đối tượng

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
7, được lưu trữ trong biến
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
0. Từ giờ trở đi, bạn sẽ sử dụng biến này để truy cập máy chủ MySQL của mình

Có một số điều quan trọng cần chú ý trong đoạn mã trên

  • Bạn phải luôn xử lý các ngoại lệ có thể phát sinh trong khi thiết lập kết nối với máy chủ MySQL. Đây là lý do tại sao bạn sử dụng khối

    >>> show_db_query = "SHOW DATABASES"
    >>> with connection.cursor[] as cursor:
    ..     cursor.execute[show_db_query]
    ..     for db in cursor:
    ..         print[db]
    ...
    ['information_schema',]
    ['mysql',]
    ['online_movie_rating',]
    ['performance_schema',]
    ['sys',]
    
    1 …
    >>> show_db_query = "SHOW DATABASES"
    >>> with connection.cursor[] as cursor:
    ..     cursor.execute[show_db_query]
    ..     for db in cursor:
    ..         print[db]
    ...
    ['information_schema',]
    ['mysql',]
    ['online_movie_rating',]
    ['performance_schema',]
    ['sys',]
    
    2 để bắt và in bất kỳ trường hợp ngoại lệ nào mà bạn có thể gặp phải

  • Bạn phải luôn đóng kết nối sau khi truy cập xong cơ sở dữ liệu. Để các kết nối mở không sử dụng có thể dẫn đến một số lỗi không mong muốn và các vấn đề về hiệu suất. Đoạn mã trên tận dụng trình quản lý ngữ cảnh bằng cách sử dụng

    >>> show_db_query = "SHOW DATABASES"
    >>> with connection.cursor[] as cursor:
    ..     cursor.execute[show_db_query]
    ..     for db in cursor:
    ..         print[db]
    ...
    ['information_schema',]
    ['mysql',]
    ['online_movie_rating',]
    ['performance_schema',]
    ['sys',]
    
    3, giúp loại bỏ quá trình dọn dẹp kết nối

  • Bạn không bao giờ nên mã hóa cứng thông tin đăng nhập của mình, nghĩa là tên người dùng và mật khẩu của bạn, trực tiếp trong tập lệnh Python. Đây là một phương pháp không tốt để triển khai và gây ra mối đe dọa bảo mật nghiêm trọng. Đoạn mã trên nhắc người dùng về thông tin đăng nhập. Nó sử dụng mô-đun

    >>> show_db_query = "SHOW DATABASES"
    >>> with connection.cursor[] as cursor:
    ..     cursor.execute[show_db_query]
    ..     for db in cursor:
    ..         print[db]
    ...
    ['information_schema',]
    ['mysql',]
    ['online_movie_rating',]
    ['performance_schema',]
    ['sys',]
    
    4 tích hợp để ẩn mật khẩu. Mặc dù điều này tốt hơn so với mã hóa cứng, nhưng có nhiều cách khác an toàn hơn để lưu trữ thông tin nhạy cảm, chẳng hạn như sử dụng các biến môi trường

Bây giờ bạn đã thiết lập kết nối giữa chương trình và máy chủ MySQL của mình, nhưng bạn vẫn cần tạo cơ sở dữ liệu mới hoặc kết nối với cơ sở dữ liệu hiện có bên trong máy chủ

Tạo cơ sở dữ liệu mới

Trong phần trước, bạn đã thiết lập kết nối với máy chủ MySQL của mình. Để tạo một cơ sở dữ liệu mới, bạn cần thực thi một câu lệnh SQL

CREATE DATABASE books_db;

Câu lệnh trên sẽ tạo một cơ sở dữ liệu mới với tên

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
5

Ghi chú. Trong MySQL, bắt buộc phải đặt dấu chấm phẩy [_______23_______6] ở cuối câu lệnh, dấu chấm phẩy biểu thị sự kết thúc của truy vấn. Tuy nhiên, Trình kết nối MySQL/Python tự động thêm dấu chấm phẩy vào cuối truy vấn của bạn, vì vậy bạn không cần sử dụng nó trong mã Python của mình

Để thực hiện một truy vấn SQL trong Python, bạn sẽ cần sử dụng một con trỏ, con trỏ này sẽ loại bỏ quyền truy cập vào các bản ghi cơ sở dữ liệu. MySQL Connector/Python cung cấp cho bạn lớp

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
7, giúp khởi tạo các đối tượng có thể thực thi các truy vấn MySQL trong Python. Một thể hiện của lớp
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
7 cũng được gọi là một
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9

Đối tượng

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9 sử dụng đối tượng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
7 để tương tác với máy chủ MySQL của bạn. Để tạo một
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9, hãy sử dụng phương pháp
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
3 của biến
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
0 của bạn

cursor = connection.cursor[]

Đoạn mã trên cung cấp cho bạn một thể hiện của lớp

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
7

Một truy vấn cần được thực hiện được gửi tới

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 ở định dạng chuỗi. Trong trường hợp cụ thể này, bạn sẽ gửi truy vấn
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
7 tới
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]

Sau khi thực thi đoạn mã trên, bạn sẽ có một cơ sở dữ liệu mới có tên là

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
9 trong máy chủ MySQL của mình

Truy vấn

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
7 được lưu trữ dưới dạng một chuỗi trong biến
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
];
1 và sau đó được chuyển đến
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 để thực hiện. Mã sử ​​dụng trình quản lý ngữ cảnh với đối tượng
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9 để xử lý quy trình dọn dẹp

Bạn có thể gặp lỗi ở đây nếu cơ sở dữ liệu có cùng tên đã tồn tại trong máy chủ của bạn. Để xác nhận điều này, bạn có thể hiển thị tên của tất cả các cơ sở dữ liệu trong máy chủ của mình. Sử dụng cùng một đối tượng

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
7 từ trước đó, thực hiện câu lệnh
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
];
5

>>>

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]

Đoạn mã trên in tên của tất cả các cơ sở dữ liệu hiện có trong máy chủ MySQL của bạn. Lệnh

CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
];
5 cũng xuất ra một số cơ sở dữ liệu mà bạn không tạo trong máy chủ của mình, chẳng hạn như
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
];
7,
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
];
8, v.v. Các cơ sở dữ liệu này được tạo tự động bởi máy chủ MySQL và cung cấp quyền truy cập vào nhiều siêu dữ liệu cơ sở dữ liệu và cài đặt máy chủ MySQL

Bạn đã tạo một cơ sở dữ liệu mới trong phần này bằng cách thực hiện câu lệnh

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
7. Trong phần tiếp theo, bạn sẽ thấy cách kết nối với cơ sở dữ liệu đã tồn tại

Loại bỏ các quảng cáo

Kết nối với cơ sở dữ liệu hiện có

Trong phần trước, bạn đã tạo một cơ sở dữ liệu mới có tên là

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
9. Tuy nhiên, bạn vẫn chưa kết nối với nó. Trong nhiều trường hợp, bạn đã có cơ sở dữ liệu MySQL mà bạn muốn kết nối với ứng dụng Python của mình

Bạn có thể thực hiện việc này bằng cách sử dụng cùng chức năng

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
2 mà bạn đã sử dụng trước đó bằng cách gửi tham số bổ sung có tên là
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
2

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]

Đoạn mã trên rất giống với tập lệnh kết nối mà bạn đã sử dụng trước đó. Thay đổi duy nhất ở đây là một tham số bổ sung

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
2, trong đó tên cơ sở dữ liệu của bạn được chuyển đến
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
2. Khi bạn thực thi tập lệnh này, bạn sẽ được kết nối với cơ sở dữ liệu
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
9

Tạo, thay đổi và xóa bảng

Trong phần này, bạn sẽ học cách thực hiện một số truy vấn DDL cơ bản như

cursor = connection.cursor[]
4,
cursor = connection.cursor[]
3 và
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
8 bằng Python. Bạn sẽ xem nhanh cơ sở dữ liệu MySQL mà bạn sẽ sử dụng trong phần còn lại của hướng dẫn này. Bạn cũng sẽ tạo tất cả các bảng cần thiết cho cơ sở dữ liệu và tìm hiểu cách thực hiện các sửa đổi trên các bảng này sau này.

Xác định lược đồ cơ sở dữ liệu

Bạn có thể bắt đầu bằng cách tạo lược đồ cơ sở dữ liệu cho hệ thống xếp hạng phim trực tuyến. Cơ sở dữ liệu sẽ bao gồm ba bảng

  1. create_movies_table_query = """
    CREATE TABLE movies[
        id INT AUTO_INCREMENT PRIMARY KEY,
        title VARCHAR[100],
        release_year YEAR[4],
        genre VARCHAR[100],
        collection_in_mil INT
    ]
    """
    with connection.cursor[] as cursor:
        cursor.execute[create_movies_table_query]
        connection.commit[]
    
    9 chứa thông tin chung về phim và có các thuộc tính sau
    • >>> import mysql.connector
      
      00
    • >>> import mysql.connector
      
      01
    • >>> import mysql.connector
      
      02
    • >>> import mysql.connector
      
      03
    • >>> import mysql.connector
      
      04
  2. >>> import mysql.connector
    
    05 chứa thông tin về những người đã đăng đánh giá hoặc xếp hạng và có các thuộc tính sau
    • >>> import mysql.connector
      
      00
    • >>> import mysql.connector
      
      07
    • >>> import mysql.connector
      
      08
  3. >>> import mysql.connector
    
    09 chứa thông tin về xếp hạng đã được đăng và có các thuộc tính sau
    • >>> import mysql.connector
      
      10 [khóa ngoại]
    • >>> import mysql.connector
      
      11 [khóa ngoại]
    • >>> import mysql.connector
      
      12

Một hệ thống xếp hạng phim trong thế giới thực, như IMDb, sẽ cần lưu trữ một loạt các thuộc tính khác, như email, danh sách diễn viên phim, v.v. Nếu muốn, bạn có thể thêm nhiều bảng và thuộc tính vào cơ sở dữ liệu này. Nhưng ba bảng này sẽ đủ cho mục đích của hướng dẫn này

Hình ảnh dưới đây mô tả lược đồ cơ sở dữ liệu

Sơ đồ lược đồ cho hệ thống xếp hạng phim trực tuyến

Các bảng trong cơ sở dữ liệu này có liên quan với nhau.

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 và
>>> import mysql.connector
05 sẽ có mối quan hệ nhiều-nhiều vì một bộ phim có thể được nhiều người đánh giá đánh giá và một người đánh giá có thể đánh giá nhiều phim. Bảng
>>> import mysql.connector
09 kết nối bảng
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 với bảng
>>> import mysql.connector
05

Tạo bảng sử dụng câu lệnh
>>> import mysql.connector
18

Bây giờ, để tạo một bảng mới trong MySQL, bạn cần sử dụng câu lệnh

>>> import mysql.connector
18. Truy vấn MySQL sau đây sẽ tạo bảng
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 cho cơ sở dữ liệu
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
9 của bạn

CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
];

Nếu bạn đã xem các câu lệnh SQL trước đây, thì hầu hết các truy vấn trên có thể có ý nghĩa. Nhưng có một số khác biệt trong cú pháp MySQL mà bạn nên biết

Ví dụ: MySQL có rất nhiều loại dữ liệu cho bạn xem xét, bao gồm

>>> import mysql.connector
22,
>>> import mysql.connector
23,
>>> import mysql.connector
24, v.v. Ngoài ra, MySQL sử dụng từ khóa
>>> import mysql.connector
25 khi giá trị cột phải được tăng tự động khi chèn bản ghi mới

Để tạo một bảng mới, bạn cần chuyển truy vấn này tới

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6, nơi chấp nhận truy vấn MySQL và thực hiện truy vấn trên cơ sở dữ liệu MySQL được kết nối

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]

Bây giờ bạn có bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 trong cơ sở dữ liệu của mình. Bạn chuyển
>>> import mysql.connector
28 đến
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6, thực hiện lệnh thực thi bắt buộc

Ghi chú. Biến

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
0 đề cập đến đối tượng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
7 được trả về khi bạn kết nối với cơ sở dữ liệu của mình

Ngoài ra, hãy chú ý câu lệnh

>>> import mysql.connector
32 ở cuối mã. Theo mặc định, trình kết nối MySQL của bạn không tự động cam kết. Trong MySQL, các sửa đổi được đề cập trong một giao dịch chỉ xảy ra khi bạn sử dụng lệnh
>>> import mysql.connector
33 cuối cùng. Luôn gọi phương thức này sau mỗi giao dịch để thực hiện các thay đổi trong bảng thực tế

Như bạn đã làm với bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9, hãy thực thi đoạn script sau để tạo bảng
>>> import mysql.connector
05

>>> import mysql.connector
0

Nếu được yêu cầu, bạn có thể thêm thông tin khác về người đánh giá, chẳng hạn như ID email hoặc thông tin nhân khẩu học của họ. Nhưng

>>> import mysql.connector
07 và
>>> import mysql.connector
08 sẽ phục vụ mục đích của bạn lúc này

Cuối cùng, bạn có thể tạo bảng

>>> import mysql.connector
09 bằng cách sử dụng tập lệnh sau

>>> import mysql.connector
1

Việc triển khai các mối quan hệ khóa ngoại trong MySQL hơi khác và bị hạn chế so với SQL tiêu chuẩn. Trong MySQL, cả cha và con trong ràng buộc khóa ngoài phải sử dụng cùng một công cụ lưu trữ

Công cụ lưu trữ là thành phần phần mềm cơ bản mà hệ thống quản lý cơ sở dữ liệu sử dụng để thực hiện các thao tác SQL. Trong MySQL, các công cụ lưu trữ có hai loại khác nhau

  1. Công cụ lưu trữ giao dịch là giao dịch an toàn và cho phép bạn khôi phục giao dịch bằng các lệnh đơn giản như

    >>> import mysql.connector
    
    39. Nhiều công cụ MySQL phổ biến, bao gồm InnoDB và NDB, thuộc danh mục này

  2. Các công cụ lưu trữ phi giao dịch phụ thuộc vào mã thủ công phức tạp để hoàn tác các câu lệnh đã cam kết trên cơ sở dữ liệu. MyISAM, MEMORY và nhiều công cụ MySQL khác không giao dịch

InnoDB là công cụ lưu trữ mặc định và phổ biến nhất. Nó giúp duy trì tính toàn vẹn của dữ liệu bằng cách hỗ trợ các ràng buộc khóa ngoài. Điều này có nghĩa là mọi thao tác CRUD trên khóa ngoại đều được kiểm tra để đảm bảo rằng nó không dẫn đến sự không nhất quán giữa các bảng khác nhau

Ngoài ra, lưu ý rằng bảng

>>> import mysql.connector
09 sử dụng các cột
>>> import mysql.connector
10 và
>>> import mysql.connector
11, cả hai khóa ngoại, cùng làm khóa chính. Bước này đảm bảo rằng người đánh giá không thể xếp hạng hai lần cho cùng một bộ phim

Bạn có thể chọn sử dụng lại cùng một con trỏ cho nhiều lần thực hiện. Trong trường hợp đó, tất cả các lần thực thi sẽ trở thành một giao dịch nguyên tử thay vì nhiều giao dịch riêng biệt. Ví dụ: bạn có thể thực hiện tất cả các câu lệnh

>>> import mysql.connector
18 bằng một con trỏ và sau đó thực hiện giao dịch của mình chỉ một lần

>>> import mysql.connector
2

Đoạn mã trên trước tiên sẽ thực thi cả ba câu lệnh

cursor = connection.cursor[]
4. Sau đó, nó sẽ gửi một lệnh
>>> import mysql.connector
33 đến máy chủ MySQL thực hiện giao dịch của bạn. Bạn cũng có thể sử dụng
>>> import mysql.connector
46 để gửi lệnh
>>> import mysql.connector
47 tới máy chủ MySQL và xóa tất cả các thay đổi dữ liệu khỏi giao dịch

Loại bỏ các quảng cáo

Hiển thị lược đồ bảng bằng cách sử dụng câu lệnh
>>> import mysql.connector
48

Bây giờ, bạn đã tạo cả ba bảng, bạn có thể xem lược đồ của chúng bằng cách sử dụng câu lệnh SQL sau

>>> import mysql.connector
3

Để lấy lại một số kết quả từ đối tượng

>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9, bạn cần sử dụng
>>> import mysql.connector
50. Phương thức này tìm nạp tất cả các hàng từ câu lệnh được thực thi cuối cùng. Giả sử bạn đã có đối tượng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        create_db_query = "CREATE DATABASE online_movie_rating"
        with connection.cursor[] as cursor:
            cursor.execute[create_db_query]
except Error as e:
    print[e]
7 trong biến
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
0, bạn có thể in ra tất cả các kết quả được tìm nạp bởi
>>> import mysql.connector
50

>>>

>>> import mysql.connector
4

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được một bảng chứa thông tin về tất cả các cột trong bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9. Đối với mỗi cột, bạn sẽ nhận được thông tin chi tiết như loại dữ liệu của cột, liệu cột đó có phải là khóa chính hay không, v.v.

Sửa đổi lược đồ bảng bằng cách sử dụng câu lệnh
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
8

Trong bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9, bạn có một cột tên là
>>> import mysql.connector
04, chứa doanh thu phòng vé của một bộ phim tính bằng triệu đô la. Bạn có thể viết câu lệnh MySQL sau để sửa đổi kiểu dữ liệu của thuộc tính
>>> import mysql.connector
04 từ
>>> import mysql.connector
23 thành
>>> import mysql.connector
60

>>> import mysql.connector
5

>>> import mysql.connector
61 có nghĩa là một số thập phân có thể có tối đa
>>> import mysql.connector
62 chữ số, trong đó
>>> import mysql.connector
63 là số thập phân, chẳng hạn như
>>> import mysql.connector
64,
>>> import mysql.connector
65,
>>> import mysql.connector
66, v.v. Sau khi thực hiện câu lệnh
>>> import mysql.connector
67, bạn có thể hiển thị lược đồ bảng được cập nhật bằng cách sử dụng
>>> import mysql.connector
48

>>>

>>> import mysql.connector
6

Như được hiển thị trong đầu ra, thuộc tính

>>> import mysql.connector
04 hiện có kiểu
>>> import mysql.connector
61. Cũng lưu ý rằng trong đoạn mã trên, bạn gọi
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 hai lần. Nhưng
>>> import mysql.connector
50 chỉ tìm nạp các hàng từ truy vấn được thực hiện cuối cùng, đó là truy vấn
>>> import mysql.connector
73

Xóa bảng bằng cách sử dụng câu lệnh
cursor = connection.cursor[]
3

Để xóa một bảng, bạn cần thực thi câu lệnh

>>> import mysql.connector
75 trong MySQL. Xóa một bảng là một quá trình không thể đảo ngược. Nếu bạn thực thi mã bên dưới, thì bạn sẽ cần gọi lại truy vấn
>>> import mysql.connector
18 để sử dụng bảng
>>> import mysql.connector
09 trong các phần sắp tới

Để xóa bảng

>>> import mysql.connector
09, hãy gửi
>>> import mysql.connector
79 tới
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6

>>> import mysql.connector
7

Nếu bạn thực thi đoạn mã trên, bạn sẽ xóa thành công bảng

>>> import mysql.connector
09

Chèn bản ghi vào bảng

Trong phần trước, bạn đã tạo ba bảng trong cơ sở dữ liệu của mình.

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9,
>>> import mysql.connector
05 và
>>> import mysql.connector
09. Bây giờ bạn cần điền dữ liệu vào các bảng này. Phần này sẽ đề cập đến hai cách khác nhau để chèn bản ghi trong Trình kết nối MySQL cho Python

Phương pháp đầu tiên,

>>> import mysql.connector
85, hoạt động tốt khi số lượng bản ghi ít và bản ghi có thể được mã hóa cứng. Phương pháp thứ hai,
>>> import mysql.connector
86, phổ biến hơn và phù hợp hơn với các tình huống trong thế giới thực

Loại bỏ các quảng cáo

Sử dụng
>>> import mysql.connector
85

Cách tiếp cận đầu tiên sử dụng cùng một phương pháp

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 mà bạn đã sử dụng cho đến bây giờ. Bạn viết truy vấn
>>> import mysql.connector
89 trong một chuỗi và chuyển nó tới
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6. Bạn có thể sử dụng phương pháp này để chèn dữ liệu vào bảng
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9

Để tham khảo, bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 có năm thuộc tính

  1. >>> import mysql.connector
    
    00
  2. >>> import mysql.connector
    
    01
  3. >>> import mysql.connector
    
    02
  4. >>> import mysql.connector
    
    03
  5. >>> import mysql.connector
    
    04

Bạn không cần thêm dữ liệu cho

>>> import mysql.connector
00 vì
>>> import mysql.connector
25 sẽ tự động tính toán
>>> import mysql.connector
00 cho bạn. Đoạn script sau chèn các bản ghi vào bảng
create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9

>>> import mysql.connector
8

Bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 hiện được tải với ba mươi bản ghi. Mã gọi
>>> import mysql.connector
32 ở cuối. Điều quan trọng là phải gọi
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
04 sau khi thực hiện bất kỳ sửa đổi nào đối với bảng

Sử dụng
>>> import mysql.connector
86

Cách tiếp cận trước phù hợp hơn khi số lượng bản ghi khá nhỏ và bạn có thể viết những bản ghi này trực tiếp vào mã. Nhưng điều này hiếm khi đúng. Bạn sẽ thường lưu trữ dữ liệu này trong một số tệp khác hoặc dữ liệu sẽ được tạo bởi một tập lệnh khác và sẽ cần được thêm vào cơ sở dữ liệu MySQL

Đây là nơi mà

>>> import mysql.connector
86 có ích. Nó chấp nhận hai tham số

  1. Một truy vấn có chứa chỗ dành sẵn cho các bản ghi cần được chèn
  2. Một danh sách chứa tất cả các bản ghi mà bạn muốn chèn

Ví dụ sau chèn các bản ghi cho bảng

>>> import mysql.connector
05

>>> import mysql.connector
9

Trong đoạn mã trên, bạn chuyển cả truy vấn và danh sách bản ghi làm đối số cho

>>> import mysql.connector
86. Những bản ghi này có thể đã được lấy từ một tệp hoặc từ người dùng và được lưu trữ trong danh sách
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
09

Mã này sử dụng

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
10 làm trình giữ chỗ cho hai chuỗi phải được chèn vào
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
11. Trình giữ chỗ đóng vai trò là trình xác định định dạng và giúp dành chỗ cho một biến bên trong chuỗi. Biến đã chỉ định sau đó được thêm vào vị trí này trong khi thực thi

Tương tự, bạn có thể sử dụng

>>> import mysql.connector
86 để chèn bản ghi vào bảng
>>> import mysql.connector
09

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
0

Tất cả ba bảng hiện được điền dữ liệu. Bây giờ bạn có một cơ sở dữ liệu đánh giá phim trực tuyến đầy đủ chức năng. Bước tiếp theo là hiểu cách tương tác với cơ sở dữ liệu này

Đọc bản ghi từ cơ sở dữ liệu

Cho đến bây giờ, bạn đã xây dựng cơ sở dữ liệu của mình. Bây giờ là lúc thực hiện một số truy vấn trên đó và tìm một số thuộc tính thú vị từ tập dữ liệu này. Trong phần này, bạn sẽ học cách đọc các bản ghi từ các bảng cơ sở dữ liệu bằng cách sử dụng câu lệnh

cursor = connection.cursor[]
2

Loại bỏ các quảng cáo

Đọc Hồ sơ Sử dụng Tuyên bố
cursor = connection.cursor[]
2

Để truy xuất hồ sơ, bạn cần gửi truy vấn

cursor = connection.cursor[]
2 tới
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6. Sau đó, bạn sử dụng
>>> import mysql.connector
50 để trích xuất bảng đã truy xuất dưới dạng danh sách các hàng hoặc bản ghi

Hãy thử viết một truy vấn MySQL để chọn tất cả các bản ghi từ bảng

create_movies_table_query = """
CREATE TABLE movies[
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR[100],
    release_year YEAR[4],
    genre VARCHAR[100],
    collection_in_mil INT
]
"""
with connection.cursor[] as cursor:
    cursor.execute[create_movies_table_query]
    connection.commit[]
9 và gửi tới
>>> import mysql.connector
85

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
1

Biến

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
21 giữ các bản ghi được trả về từ việc sử dụng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
22. Đó là danh sách các bộ đại diện cho các bản ghi riêng lẻ từ bảng

Trong truy vấn trên, bạn sử dụng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
23 để hạn chế số hàng nhận được từ câu lệnh
cursor = connection.cursor[]
2. Các nhà phát triển thường sử dụng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
23 để thực hiện khi xử lý khối lượng dữ liệu lớn

Trong MySQL, mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
23 nhận một hoặc hai đối số số không âm. Khi sử dụng một đối số, bạn chỉ định số hàng tối đa sẽ trả về. Vì truy vấn của bạn bao gồm
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
27, nên chỉ bản ghi
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
28 đầu tiên được tìm nạp. Khi sử dụng cả hai đối số, bạn cũng có thể chỉ định phần bù của hàng đầu tiên để trả về

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
2

Đối số đầu tiên chỉ định độ lệch của

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
29 và đối số thứ hai hạn chế số lượng hàng được trả về thành
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
28. Truy vấn trên sẽ trả về các hàng từ 3 đến 7

Bạn cũng có thể truy vấn các cột đã chọn

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
3

Bây giờ, mã chỉ xuất giá trị từ hai cột được chỉ định.

>>> import mysql.connector
01 và
>>> import mysql.connector
02

Lọc Kết quả Sử dụng Mệnh đề
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33

Bạn có thể lọc các bản ghi bảng theo các tiêu chí cụ thể bằng cách sử dụng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33. Ví dụ: để truy xuất tất cả các phim có doanh thu phòng vé lớn hơn 300 triệu đô la, bạn có thể chạy truy vấn sau

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
4

Bạn cũng có thể sử dụng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
35 trong truy vấn cuối cùng để sắp xếp kết quả từ người có thu nhập cao nhất đến người có thu nhập thấp nhất

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
5

MySQL cung cấp rất nhiều thao tác định dạng chuỗi như

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
36 để nối chuỗi. Thông thường, các trang web sẽ hiển thị tiêu đề phim cùng với năm phát hành để tránh nhầm lẫn. Để truy xuất tiêu đề của năm bộ phim có doanh thu cao nhất, nối với năm phát hành của chúng, bạn có thể viết truy vấn sau

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6

Nếu bạn không muốn sử dụng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
23 và bạn không cần tìm nạp tất cả các bản ghi, thì đối tượng
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9 cũng có các phương thức
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
39 và
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
40

  • from getpass import getpass
    from mysql.connector import connect, Error
    
    try:
        with connect[
            host="localhost",
            user=input["Enter username: "],
            password=getpass["Enter password: "],
        ] as connection:
            print[connection]
    except Error as e:
        print[e]
    
    39 truy xuất hàng tiếp theo của kết quả, dưới dạng một bộ hoặc
    from getpass import getpass
    from mysql.connector import connect, Error
    
    try:
        with connect[
            host="localhost",
            user=input["Enter username: "],
            password=getpass["Enter password: "],
        ] as connection:
            print[connection]
    except Error as e:
        print[e]
    
    42 nếu không còn hàng nào nữa
  • from getpass import getpass
    from mysql.connector import connect, Error
    
    try:
        with connect[
            host="localhost",
            user=input["Enter username: "],
            password=getpass["Enter password: "],
        ] as connection:
            print[connection]
    except Error as e:
        print[e]
    
    40 truy xuất tập hợp các hàng tiếp theo từ kết quả dưới dạng danh sách các bộ dữ liệu. Nó có đối số
    from getpass import getpass
    from mysql.connector import connect, Error
    
    try:
        with connect[
            host="localhost",
            user=input["Enter username: "],
            password=getpass["Enter password: "],
        ] as connection:
            print[connection]
    except Error as e:
        print[e]
    
    44, mặc định là
    >>> import mysql.connector
    
    63, mà bạn có thể sử dụng để chỉ định số hàng bạn cần tìm nạp. Nếu không còn hàng nào nữa thì phương thức trả về một danh sách trống

Hãy thử truy xuất lại tiêu đề của năm bộ phim có doanh thu cao nhất nối với năm phát hành của chúng, nhưng lần này hãy sử dụng

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
40

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
7

Đầu ra với

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
40 tương tự như những gì bạn nhận được khi bạn sử dụng mệnh đề
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
23. Bạn có thể đã nhận thấy cuộc gọi bổ sung
>>> import mysql.connector
50 ở cuối. Bạn làm điều này để xóa tất cả các kết quả còn lại mà
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
40 chưa đọc

Cần phải xóa tất cả các kết quả chưa đọc trước khi thực hiện bất kỳ câu lệnh nào khác trên cùng một kết nối. Nếu không, một ngoại lệ

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
51 sẽ được đưa ra

Loại bỏ các quảng cáo

Xử lý nhiều bảng bằng cách sử dụng câu lệnh
cursor = connection.cursor[]
5

Nếu bạn thấy các truy vấn trong phần trước khá đơn giản, đừng lo lắng. Bạn có thể thực hiện các truy vấn

cursor = connection.cursor[]
2 của mình phức tạp như bạn muốn bằng cách sử dụng các phương pháp tương tự từ phần trước

Hãy xem xét một số truy vấn

cursor = connection.cursor[]
5 phức tạp hơn một chút. Nếu bạn muốn tìm tên của năm bộ phim được xếp hạng cao nhất trong cơ sở dữ liệu của mình, thì bạn có thể chạy truy vấn sau

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
8

Như đã trình bày ở trên, Night of the Living Dead và The Godfather được xếp hạng cao nhất trong cơ sở dữ liệu

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
9 của bạn

Để tìm tên của người đánh giá đã xếp hạng nhiều nhất, hãy viết truy vấn sau

>>>

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
9

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
56 là người đánh giá thường xuyên nhất trong cơ sở dữ liệu này. Như đã thấy ở trên, truy vấn phức tạp đến mức nào không quan trọng bởi vì nó cuối cùng được xử lý bởi máy chủ MySQL. Quá trình thực hiện truy vấn của bạn sẽ luôn giữ nguyên. chuyển truy vấn tới
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 và lấy kết quả bằng cách sử dụng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
22

Cập nhật và xóa bản ghi khỏi cơ sở dữ liệu

Trong phần này, bạn sẽ cập nhật và xóa các bản ghi khỏi cơ sở dữ liệu. Cả hai thao tác này đều có thể được thực hiện trên một bản ghi hoặc nhiều bản ghi trong bảng. Bạn sẽ chọn các hàng cần sửa đổi bằng cách sử dụng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
60 Lệnh

Một trong những người đánh giá trong cơ sở dữ liệu của bạn,

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
61, hiện đã kết hôn với
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
62. Họ của cô ấy hiện đã đổi thành
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
63, vì vậy bạn cần cập nhật cơ sở dữ liệu của mình cho phù hợp. Để cập nhật bản ghi, MySQL sử dụng câu lệnh
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
60

CREATE DATABASE books_db;
0

Mã này chuyển truy vấn cập nhật tới

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 và
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
04 đưa các thay đổi cần thiết vào bảng
>>> import mysql.connector
05

Ghi chú. Trong truy vấn

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
60, mệnh đề
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33 giúp chỉ định các bản ghi cần được cập nhật. Nếu bạn không sử dụng
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33, thì tất cả hồ sơ sẽ được cập nhật

Giả sử bạn cần cung cấp tùy chọn cho phép người đánh giá sửa đổi xếp hạng. Người đánh giá sẽ cung cấp ba giá trị,

>>> import mysql.connector
10,
>>> import mysql.connector
11, và giá trị mới
>>> import mysql.connector
12. Mã sẽ hiển thị bản ghi sau khi thực hiện sửa đổi được chỉ định

Giả sử rằng

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
74,
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
75 và
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
76 mới, bạn có thể sử dụng các truy vấn MySQL sau để thực hiện sửa đổi cần thiết

CREATE DATABASE books_db;
1

Các truy vấn trên đầu tiên cập nhật xếp hạng và sau đó hiển thị nó. Bạn có thể tạo một tập lệnh Python hoàn chỉnh để thiết lập kết nối với cơ sở dữ liệu và cho phép người đánh giá sửa đổi xếp hạng

CREATE DATABASE books_db;
2

Lưu mã này vào tệp có tên

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
77. Đoạn mã trên sử dụng trình giữ chỗ
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
10 để chèn đầu vào nhận được vào chuỗi
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
79. Lần đầu tiên trong hướng dẫn này, bạn có nhiều truy vấn bên trong một chuỗi. Để chuyển nhiều truy vấn đến một
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6, bạn cần đặt đối số
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
81 của phương thức thành
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
82

Nếu

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
81 là
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
82, thì
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 trả về một trình vòng lặp. Mỗi mục trong trình vòng lặp tương ứng với một đối tượng
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9 thực thi một câu lệnh được truyền trong truy vấn. Đoạn mã trên chạy một vòng lặp
cursor = connection.cursor[]
0 trên iterator này và sau đó gọi
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
22 trên mỗi đối tượng
>>> show_db_query = "SHOW DATABASES"
>>> with connection.cursor[] as cursor:
..     cursor.execute[show_db_query]
..     for db in cursor:
..         print[db]
...
['information_schema',]
['mysql',]
['online_movie_rating',]
['performance_schema',]
['sys',]
9

Ghi chú. Chạy

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
22 trên tất cả các đối tượng con trỏ là quan trọng. Để thực hiện một câu lệnh mới trên cùng một kết nối, bạn phải đảm bảo rằng không có kết quả chưa đọc từ các lần thực hiện trước đó. Nếu có kết quả chưa đọc, thì bạn sẽ nhận được một ngoại lệ

Nếu không có tập kết quả nào được tìm nạp trong một thao tác, thì

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
22 sẽ đưa ra một ngoại lệ. Để tránh lỗi này, trong đoạn mã trên, bạn sử dụng thuộc tính
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
92, thuộc tính này cho biết liệu thao tác được thực hiện gần đây nhất có tạo ra các hàng hay không

Mặc dù mã này sẽ giải quyết được mục đích của bạn, nhưng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33 là mục tiêu chính của tin tặc web ở trạng thái hiện tại. Nó dễ bị tổn thương trước cái được gọi là tấn công SQL injection, có thể cho phép các tác nhân độc hại làm hỏng hoặc lạm dụng cơ sở dữ liệu của bạn

Cảnh báo. Đừng thử các đầu vào bên dưới trên cơ sở dữ liệu của bạn. Họ sẽ làm hỏng bảng của bạn và bạn sẽ cần phải tạo lại nó

Ví dụ: nếu người dùng gửi

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
94,
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
95 và
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
96 mới làm đầu vào, thì đầu ra sẽ như thế này

CREATE DATABASE books_db;
3

>>> import mysql.connector
12 với
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
94 và
from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
95 đã được đổi thành
CREATE DATABASE books_db;
00. Nhưng nếu bạn là hacker, thì bạn có thể gửi một lệnh ẩn trong đầu vào của mình

CREATE DATABASE books_db;
4

Một lần nữa, đầu ra cho thấy rằng

>>> import mysql.connector
12 được chỉ định đã được thay đổi thành
CREATE DATABASE books_db;
00. Điều gì đã thay đổi?

Tin tặc đã lẻn vào một truy vấn cập nhật khi đang nhập

>>> import mysql.connector
11. Truy vấn cập nhật,
CREATE DATABASE books_db;
04, thay đổi
>>> import mysql.connector
08 của tất cả các bản ghi trong bảng
>>> import mysql.connector
05 thành
CREATE DATABASE books_db;
07. Bạn có thể thấy sự thay đổi này nếu in ra bảng
>>> import mysql.connector
05

>>>

CREATE DATABASE books_db;
5

Đoạn mã trên hiển thị

>>> import mysql.connector
07 và
>>> import mysql.connector
08 cho tất cả các bản ghi trong bảng
>>> import mysql.connector
05. Cuộc tấn công SQL injection đã làm hỏng bảng này bằng cách thay đổi
>>> import mysql.connector
08 của tất cả các bản ghi thành
CREATE DATABASE books_db;
07

Có một cách khắc phục nhanh để ngăn chặn các cuộc tấn công như vậy. Không thêm trực tiếp các giá trị truy vấn do người dùng cung cấp vào chuỗi truy vấn của bạn. Thay vào đó, hãy cập nhật tập lệnh

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
77 để gửi các giá trị truy vấn này dưới dạng đối số tới
>>> import mysql.connector
85

CREATE DATABASE books_db;
6

Lưu ý rằng các trình giữ chỗ

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
10 không còn trong dấu ngoặc kép chuỗi. Các chuỗi được chuyển đến trình giữ chỗ có thể chứa một số ký tự đặc biệt. Nếu cần, chúng có thể được thoát chính xác bởi thư viện bên dưới

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 đảm bảo rằng các giá trị trong bộ nhận được dưới dạng đối số thuộc loại dữ liệu bắt buộc. Nếu người dùng cố gắng nhập một số ký tự có vấn đề, thì mã sẽ đưa ra một ngoại lệ

CREATE DATABASE books_db;
7

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
        database="online_movie_rating",
    ] as connection:
        print[connection]
except Error as e:
    print[e]
6 sẽ đưa ra một ngoại lệ nếu nó tìm thấy bất kỳ ký tự không mong muốn nào trong đầu vào của người dùng. Bạn nên sử dụng phương pháp này bất cứ khi nào bạn kết hợp đầu vào của người dùng trong một truy vấn. Có nhiều cách khác để ngăn chặn các cuộc tấn công SQL injection

Loại bỏ các quảng cáo

CREATE DATABASE books_db;
19 Lệnh

Xóa hồ sơ hoạt động rất giống với cập nhật hồ sơ. Bạn sử dụng câu lệnh

CREATE DATABASE books_db;
19 để xóa các bản ghi đã chọn

Ghi chú. Xóa là một quá trình không thể đảo ngược. Nếu bạn không sử dụng mệnh đề

from getpass import getpass
from mysql.connector import connect, Error

try:
    with connect[
        host="localhost",
        user=input["Enter username: "],
        password=getpass["Enter password: "],
    ] as connection:
        print[connection]
except Error as e:
    print[e]
33, thì tất cả các bản ghi từ bảng được chỉ định sẽ bị xóa. Bạn sẽ cần chạy lại truy vấn
>>> import mysql.connector
89 để lấy lại các bản ghi đã xóa

Trước tiên, bạn nên chạy truy vấn

cursor = connection.cursor[]
2 với cùng một bộ lọc để đảm bảo rằng bạn đang xóa đúng bản ghi. Ví dụ: để xóa tất cả các xếp hạng do
CREATE DATABASE books_db;
24 đưa ra, trước tiên bạn nên chạy truy vấn
cursor = connection.cursor[]
2 tương ứng

>>>

CREATE DATABASE books_db;
8

Đoạn mã trên xuất ra giá trị

>>> import mysql.connector
11 và
>>> import mysql.connector
10 cho các bản ghi trong bảng
>>> import mysql.connector
09 trong đó
CREATE DATABASE books_db;
24. Khi bạn đã xác nhận rằng đây là những bản ghi mà bạn cần xóa, bạn có thể chạy truy vấn
CREATE DATABASE books_db;
19 với cùng một bộ lọc

CREATE DATABASE books_db;
9

Với truy vấn này, bạn xóa tất cả các xếp hạng do người đánh giá đưa ra với

CREATE DATABASE books_db;
24 khỏi bảng
>>> import mysql.connector
09

Các cách khác để kết nối Python và MySQL

Trong hướng dẫn này, bạn đã thấy MySQL Connector/Python, đây là phương tiện được đề xuất chính thức để tương tác với cơ sở dữ liệu MySQL từ ứng dụng Python. Có hai trình kết nối phổ biến khác

  1. mysqlclient là một thư viện cạnh tranh trực tiếp với trình kết nối chính thức và được cập nhật tích cực với các tính năng mới. Bởi vì lõi của nó được viết bằng C, nên nó có hiệu suất tốt hơn trình kết nối chính thức thuần Python. Một nhược điểm lớn là khá khó thiết lập và cài đặt, đặc biệt là trên Windows

  2. MySQLdb là một phần mềm cũ vẫn được sử dụng trong các ứng dụng thương mại. Nó được viết bằng C và nhanh hơn MySQL Connector/Python nhưng chỉ có sẵn cho Python 2

Các trình kết nối này đóng vai trò là giao diện giữa chương trình của bạn và cơ sở dữ liệu MySQL và bạn gửi các truy vấn SQL của mình thông qua chúng. Nhưng nhiều nhà phát triển thích sử dụng mô hình hướng đối tượng hơn là truy vấn SQL để thao tác dữ liệu

Ánh xạ quan hệ đối tượng [ORM] là một kỹ thuật cho phép bạn truy vấn và thao tác dữ liệu từ cơ sở dữ liệu trực tiếp bằng ngôn ngữ hướng đối tượng. Thư viện ORM đóng gói mã cần thiết để thao tác dữ liệu, giúp loại bỏ nhu cầu sử dụng dù chỉ một chút SQL. Dưới đây là các ORM Python phổ biến nhất cho cơ sở dữ liệu dựa trên SQL

  1. SQLAlchemy là một ORM hỗ trợ giao tiếp giữa Python và các cơ sở dữ liệu SQL khác. Bạn có thể tạo các công cụ khác nhau cho các cơ sở dữ liệu khác nhau như MySQL, PostgreSQL, SQLite, v.v. SQLAlchemy thường được sử dụng để cung cấp chức năng xử lý dữ liệu hoàn chỉnh

  2. peewee là một ORM nhẹ và nhanh, thiết lập nhanh chóng. Điều này khá hữu ích khi tương tác của bạn với cơ sở dữ liệu bị giới hạn trong việc trích xuất một vài bản ghi. Ví dụ: nếu bạn cần sao chép các bản ghi đã chọn từ cơ sở dữ liệu MySQL sang tệp CSV, thì peewee có thể là lựa chọn tốt nhất của bạn

  3. Django ORM là một trong những tính năng mạnh mẽ nhất của Django và được cung cấp cùng với khung web Django. Nó có thể tương tác với nhiều loại cơ sở dữ liệu như SQLite, PostgreSQL và MySQL. Nhiều ứng dụng dựa trên Django sử dụng Django ORM để mô hình hóa dữ liệu và truy vấn cơ bản nhưng thường chuyển sang SQLAlchemy cho các yêu cầu phức tạp hơn

Bạn có thể tìm thấy một trong những cách tiếp cận này phù hợp hơn cho ứng dụng của mình. Nếu bạn không chắc chắn nên sử dụng cái nào, thì tốt nhất nên sử dụng Trình kết nối/Python MySQL được đề xuất chính thức mà bạn đã thấy trong hướng dẫn này

Phần kết luận

Trong hướng dẫn này, bạn đã biết cách sử dụng MySQL Connector/Python để tích hợp cơ sở dữ liệu MySQL với ứng dụng Python của bạn. Bạn cũng đã thấy một số tính năng độc đáo của cơ sở dữ liệu MySQL giúp phân biệt nó với các cơ sở dữ liệu SQL khác

Đồng thời, bạn đã học được một số phương pháp hay nhất về lập trình đáng để xem xét khi thiết lập kết nối, tạo bảng cũng như chèn và cập nhật bản ghi trong ứng dụng cơ sở dữ liệu. Bạn cũng đã phát triển cơ sở dữ liệu MySQL mẫu cho hệ thống xếp hạng phim trực tuyến và tương tác với nó trực tiếp từ ứng dụng Python của bạn

Trong hướng dẫn này, bạn đã học cách

  • Kết nối ứng dụng Python của bạn với cơ sở dữ liệu MySQL
  • Mang dữ liệu từ cơ sở dữ liệu MySQL vào Python để phân tích thêm
  • Thực thi các truy vấn SQL từ ứng dụng Python của bạn
  • Xử lý ngoại lệ khi truy cập cơ sở dữ liệu
  • Ngăn chặn các cuộc tấn công SQL injection vào ứng dụng của bạn

Nếu bạn quan tâm, Python cũng có các trình kết nối cho các DBMS khác như MongoDB và PostgreSQL. Để biết thêm thông tin, hãy xem Hướng dẫn cơ sở dữ liệu Python

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Chaitanya Baweja

Chaitanya là một Pythonista cuồng nhiệt và viết cho Real Python

» Tìm hiểu thêm về Chaitanya

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Bartosz

Geir Arne

Joanna

Gia-cốp

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Làm thế nào để một chương trình Python kết nối với cơ sở dữ liệu?

Để tạo kết nối giữa cơ sở dữ liệu MySQL và Python, phương thức connect[] của mysql. mô-đun trình kết nối được sử dụng . Chúng tôi chuyển các chi tiết cơ sở dữ liệu như Tên máy chủ, tên người dùng và mật khẩu trong lệnh gọi phương thức, sau đó phương thức trả về đối tượng kết nối.

Python kết nối với cơ sở dữ liệu bên ngoài như thế nào?

Chương 1. .
Bước 1. Tạo cơ sở dữ liệu bên ngoài. Đối với hướng dẫn này, chúng tôi sẽ sử dụng cơ sở dữ liệu Postgres thử nghiệm do nhóm Anvil lưu trữ. .
Bước 2. Cài đặt psycopg2. Thư viện Python để kết nối với Postgres là psycopg2. .
Bước 3. Truy vấn cơ sở dữ liệu của bạn từ Python

Chúng ta có thể kết nối Python với cơ sở dữ liệu SQL không?

Bạn có thể kết nối với Cơ sở dữ liệu SQL bằng Python trên Windows, Linux hoặc macOS .

Bạn có thể sử dụng cơ sở dữ liệu với Python không?

Ngôn ngữ lập trình Python có các tính năng mạnh mẽ để lập trình cơ sở dữ liệu. Python hỗ trợ nhiều cơ sở dữ liệu khác nhau như SQLite, MySQL, Oracle, Sybase, PostgreSQL, v.v. . Python cũng hỗ trợ Ngôn ngữ Định nghĩa Dữ liệu [DDL], Ngôn ngữ Thao tác Dữ liệu [DML] và Câu lệnh Truy vấn Dữ liệu.

Chủ Đề