Giới hạn độ dài tên bảng MySQL

Cơ sở dữ liệu, bảng, chỉ mục, cột, bí danh, dạng xem, quy trình được lưu trữ, trình kích hoạt, sự kiện, biến, phân vùng, không gian bảng, điểm lưu trữ, nhãn, người dùng, vai trò, được gọi chung là số nhận dạng và có các quy tắc đặt tên nhất định

Định danh có thể được trích dẫn bằng cách sử dụng ký tự backtick -

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
95. Trích dẫn là tùy chọn đối với số nhận dạng không chứa ký tự đặc biệt hoặc đối với số nhận dạng không phải là từ dành riêng. Nếu cờ ____ 296 SQL_MODE được đặt, dấu ngoặc kép [________ 00] cũng có thể được sử dụng để trích dẫn định danh. Nếu cờ
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
1 được đặt, dấu ngoặc vuông [
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
2 và
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
3] có thể được sử dụng để trích dẫn

Ngay cả khi sử dụng các từ dành riêng làm tên, các tên đủ điều kiện không cần phải trích dẫn. Ví dụ:

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
4 chỉ có một nghĩa có thể, vì vậy nó được phân tích cú pháp chính xác ngay cả khi không có dấu ngoặc kép

không trích dẫn

Các ký tự sau hợp lệ và cho phép các mã định danh không được trích dẫn

  • ASCII. [0-9,a-z,A-Z$_] [chữ số 0-9, chữ cái Latinh cơ bản, cả chữ thường và chữ hoa, ký hiệu đô la, dấu gạch dưới]
  • Mở rộng. U+0080. U+FFFF

trích dẫn

Các ký tự sau hợp lệ, nhưng số nhận dạng sử dụng chúng phải được trích dẫn

  • ASCII. U+0001. U+007F [Mặt phẳng đa ngôn ngữ cơ bản đầy đủ Unicode [BMP] ngoại trừ U+0000]
  • Mở rộng. U+0080. U+FFFF
  • Bản thân các trích dẫn định danh có thể được sử dụng như một phần của định danh, miễn là chúng được trích dẫn

Quy tắc khác

Có một số quy tắc khác cho định danh

  • Mã định danh được lưu trữ dưới dạng Unicode [UTF-8]
  • Định danh có thể hoặc không thể phân biệt chữ hoa chữ thường. Xem Mã định danh Phân biệt chữ hoa chữ thường
  • Tên cơ sở dữ liệu, bảng và cột không được kết thúc bằng ký tự khoảng trắng
  • Tên định danh có thể bắt đầu bằng một chữ số, nhưng không thể chỉ chứa các chữ số trừ khi được trích dẫn
  • Mã định danh bắt đầu bằng chữ số, theo sau là 'e', ​​có thể được phân tích cú pháp dưới dạng số dấu phẩy động và cần được trích dẫn
  • Số nhận dạng không được phép chứa ký tự ASCII NUL [U+0000] và các ký tự bổ sung [U+10000 trở lên]
  • Những tên như 5e6, 9e không bị cấm, nhưng chúng tôi khuyên bạn không nên sử dụng chúng vì chúng có thể dẫn đến sự mơ hồ trong một số ngữ cảnh nhất định, được coi là một số hoặc biểu thức
  • Biến người dùng không thể được sử dụng như một phần của mã định danh hoặc làm mã định danh trong câu lệnh SQL

trích dẫn nhân vật

Ký tự trích dẫn thông thường là ký tự đánh dấu ngược -

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
95, nhưng nếu tùy chọn SQL_MODE ____________ được chỉ định, thì một trích dẫn kép thông thường -
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
0 cũng có thể được sử dụng

Ký tự backtick có thể được sử dụng như một phần của mã định danh. Trong trường hợp đó, số nhận dạng cần được trích dẫn. Ký tự trích dẫn có thể là dấu gạch ngược, nhưng trong trường hợp đó, dấu gạch ngược trong tên phải được thoát bằng một dấu gạch ngược khác

Chiều dài tối đa

  • Cơ sở dữ liệu, bảng, cột, chỉ mục, ràng buộc, quy trình được lưu trữ, trình kích hoạt, sự kiện, dạng xem, không gian bảng, máy chủ và nhóm tệp nhật ký có độ dài tối đa là 64 ký tự
  • Nhãn câu lệnh ghép có độ dài tối đa là 16 ký tự
  • Bí danh có độ dài tối đa là 256 ký tự, ngoại trừ bí danh cột trong câu lệnh CREATE VIEW, được kiểm tra dựa trên độ dài cột tối đa là 64 ký tự [không phải độ dài bí danh tối đa là 256 ký tự]
  • Người dùng có độ dài tối đa là 80 ký tự
  • Vai trò có độ dài tối đa là 128 ký tự
  • Các ký tự nhiều byte không được tính thêm vào giới hạn ký tự

Nhiều định danh

MariaDB cho phép tên cột được sử dụng riêng nếu tham chiếu rõ ràng hoặc tên bảng được sử dụng với tên cột hoặc cả ba tên cơ sở dữ liệu, bảng và tên cột. Dấu chấm được sử dụng để phân tách các mã định danh và dấu chấm có thể được bao quanh bởi khoảng trắng

Các tùy chọn phương ngữ/DBAPI sau đây khả dụng. Vui lòng tham khảo các phần DBAPI riêng lẻ để biết thông tin kết nối

Các phiên bản và tính năng được hỗ trợ

SQLAlchemy hỗ trợ MySQL bắt đầu từ phiên bản 5. 0. 2 đến các bản phát hành hiện đại, cũng như tất cả các phiên bản hiện đại của MariaDB. Xem tài liệu MySQL chính thức để biết thông tin chi tiết về các tính năng được hỗ trợ trong bất kỳ bản phát hành máy chủ cụ thể nào

Thay đổi trong phiên bản 1. 4. phiên bản MySQL tối thiểu được hỗ trợ hiện là 5. 0. 2

Hỗ trợ MariaDB

Biến thể MariaDB của MySQL vẫn duy trì khả năng tương thích cơ bản với các giao thức của MySQL, tuy nhiên sự phát triển của hai sản phẩm này tiếp tục khác nhau. Trong lĩnh vực SQLAlchemy, hai cơ sở dữ liệu có một số khác biệt nhỏ về hành vi và cú pháp mà SQLAlchemy tự động điều chỉnh. Để kết nối với cơ sở dữ liệu MariaDB, không cần thay đổi URL cơ sở dữ liệu

engine = create_engine["mysql+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]

Khi kết nối lần đầu, phương ngữ SQLAlchemy sử dụng lược đồ phát hiện phiên bản máy chủ để xác định xem cơ sở dữ liệu sao lưu có báo cáo là MariaDB hay không. Dựa trên cờ này, phương ngữ có thể đưa ra các lựa chọn khác nhau ở những khu vực mà hành vi của nó phải khác

Chế độ chỉ dành cho MariaDB

Phương ngữ này cũng hỗ trợ chế độ kết nối “chỉ dành cho MariaDB” tùy chọn, có thể hữu ích trong trường hợp ứng dụng sử dụng các tính năng dành riêng cho MariaDB và không tương thích với cơ sở dữ liệu MySQL. Để sử dụng phương thức hoạt động này, hãy thay thế mã thông báo “mysql” trong URL trên bằng “mariadb”

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]

Công cụ trên, trong lần kết nối đầu tiên, sẽ phát sinh lỗi nếu tính năng phát hiện phiên bản máy chủ phát hiện ra rằng cơ sở dữ liệu sao lưu không phải là MariaDB

Khi sử dụng một công cụ có tên phương ngữ là

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
8, tất cả các tùy chọn dành riêng cho mysql bao gồm tên “mysql” trong chúng hiện được đặt tên bằng “mariadb”. Điều này có nghĩa là các tùy chọn như
Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
9 nên được đặt tên là
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
00, v.v. Cả hai tùy chọn “mysql” và “mariadb” đều có thể được sử dụng đồng thời cho các ứng dụng sử dụng URL có cả hai phương ngữ “mysql” và “mariadb”

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
1

Hành vi tương tự sẽ xảy ra khi các cấu trúc trên được phản ánh, tôi. e. tiền tố “mariadb” sẽ xuất hiện trong tên tùy chọn khi URL cơ sở dữ liệu dựa trên tên “mariadb”

Mới trong phiên bản 1. 4. Đã thêm tên phương ngữ “mariadb” hỗ trợ “chế độ chỉ dành cho MariaDB” cho phương ngữ MySQL

Hết thời gian kết nối và ngắt kết nối

MySQL/MariaDB có hành vi đóng kết nối tự động, dành cho các kết nối không hoạt động trong một khoảng thời gian cố định, mặc định là tám giờ. Để khắc phục sự cố này, hãy sử dụng tùy chọn

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
01 để đảm bảo rằng một kết nối sẽ bị hủy và thay thế bằng một kết nối mới nếu nó đã xuất hiện trong nhóm trong một số giây cố định

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
3

Để phát hiện ngắt kết nối toàn diện hơn của các kết nối gộp, bao gồm chỗ ở của máy chủ khởi động lại và các sự cố mạng, phương pháp ping trước có thể được sử dụng. Xem Xử lý Ngắt kết nối để biết các phương pháp hiện tại

Xem thêm

Xử lý Ngắt kết nối - Cơ sở về một số kỹ thuật để xử lý các kết nối đã hết thời gian chờ cũng như khởi động lại cơ sở dữ liệu

TẠO các đối số BẢNG bao gồm Công cụ lưu trữ

Cả cú pháp CREATE TABLE của MySQL và MariaDB bao gồm một loạt các tùy chọn đặc biệt, bao gồm

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
02,
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
03,
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
04,
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
05,
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
06, v.v. Để phù hợp với việc hiển thị các đối số này, hãy chỉ định biểu mẫu
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
07. Ví dụ: để chỉ định một bảng có
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
02 của
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
09,
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
03 của
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
31 và
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
32 của
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
33

________số 8

Khi hỗ trợ chế độ MariaDB-Only Mode, cũng phải bao gồm các khóa tương tự đối với tiền tố “mariadb”. Tất nhiên, các giá trị có thể thay đổi độc lập để các cài đặt khác nhau trên MySQL so với. MariaDB có thể được duy trì

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
0

Các phương ngữ MySQL/MariaDB thường sẽ chuyển bất kỳ từ khóa nào được chỉ định là

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
34 để được hiển thị là
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
35 trong câu lệnh
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
36. Một số tên trong số này sẽ hiển thị bằng dấu cách thay vì dấu gạch dưới; . g.
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
38],
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
39 [e. g.
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
40] và
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
41 [e. g.
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
42]

Đối số phổ biến nhất là

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
9, đề cập đến công cụ lưu trữ cho bảng. Trước đây, cài đặt máy chủ MySQL sẽ mặc định là
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
44 cho giá trị này, mặc dù các phiên bản mới hơn có thể được mặc định là
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
09. Công cụ
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
09 thường được ưa thích vì hỗ trợ các giao dịch và khóa ngoại

Một

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
47 được tạo trong cơ sở dữ liệu MySQL/MariaDB với công cụ lưu trữ của
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
44 về cơ bản sẽ không mang tính giao dịch, nghĩa là bất kỳ câu lệnh CHÈN/CẬP NHẬT/XÓA nào đề cập đến bảng này sẽ được gọi dưới dạng tự động cam kết. Nó cũng sẽ không hỗ trợ các ràng buộc khóa ngoại; . Phản ánh một bảng như vậy cũng sẽ không tạo ra thông tin ràng buộc khóa ngoại

Đối với các giao dịch nguyên tử hoàn toàn cũng như hỗ trợ các ràng buộc khóa ngoại, tất cả các câu lệnh

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
36 tham gia phải chỉ định một công cụ giao dịch, trong phần lớn các trường hợp là
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
09

Phân biệt chữ hoa chữ thường và phản chiếu bảng

Cả MySQL và MariaDB đều có hỗ trợ không nhất quán cho các tên định danh phân biệt chữ hoa chữ thường, hỗ trợ dựa trên các chi tiết cụ thể của hệ điều hành cơ bản. Tuy nhiên, người ta đã quan sát thấy rằng bất kể hành vi phân biệt chữ hoa chữ thường nào xuất hiện, tên của các bảng trong khai báo khóa ngoại luôn được nhận từ cơ sở dữ liệu dưới dạng chữ thường, khiến cho không thể phản ánh chính xác lược đồ nơi các bảng liên quan đến nhau sử dụng

Do đó, chúng tôi đặc biệt khuyên rằng các tên bảng được khai báo là tất cả chữ thường cả trong SQLAlchemy cũng như trên chính cơ sở dữ liệu MySQL/MariaDB, đặc biệt nếu các tính năng phản chiếu cơ sở dữ liệu sẽ được sử dụng

Mức cô lập giao dịch

Tất cả các phương ngữ MySQL/MariaDB đều hỗ trợ cài đặt mức cô lập giao dịch thông qua tham số dành riêng cho phương ngữ

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
73 được chấp nhận bởi
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
74, cũng như đối số
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
75 được chuyển cho
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
76. Tính năng này hoạt động bằng cách đưa ra lệnh
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
77 cho mỗi kết nối mới. Đối với mức cô lập AUTOCOMMIT đặc biệt, các kỹ thuật dành riêng cho DBAPI được sử dụng

Để đặt mức cô lập bằng cách sử dụng

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
74

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
3

Để đặt sử dụng các tùy chọn thực thi trên mỗi kết nối

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
4

Các giá trị hợp lệ cho

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
79 bao gồm

  • SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    60

  • SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    61

  • SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    62

  • SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    63

  • SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    64

Giá trị đặc biệt

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
64 sử dụng các thuộc tính “autocommit” khác nhau được cung cấp bởi các DBAPI cụ thể và hiện được hỗ trợ bởi MySQLdb, MySQL-Client, MySQL-Connector Python và PyMySQL. Sử dụng nó, kết nối cơ sở dữ liệu sẽ trả về true với giá trị của
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
66

Ngoài ra còn có nhiều tùy chọn hơn cho cấu hình mức cách ly, chẳng hạn như các đối tượng “công cụ phụ” được liên kết với một

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
67 chính, mỗi đối tượng áp dụng các cài đặt mức cách ly khác nhau. Xem cuộc thảo luận tại Đặt mức cô lập giao dịch bao gồm Tự động cam kết DBAPI để biết thông tin cơ bản

AUTO_INCREMENT Hành vi

Khi tạo bảng, SQLAlchemy sẽ tự động đặt

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
68 trên cột khóa chính
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
69 đầu tiên không được đánh dấu là khóa ngoại

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
7

Bạn có thể vô hiệu hóa hành vi này bằng cách chuyển

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
00 đến đối số
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
01 của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
02. Cờ này cũng có thể được sử dụng để bật tự động tăng trên cột phụ trong khóa nhiều cột cho một số công cụ lưu trữ

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
6

Con trỏ phía máy chủ

Hỗ trợ con trỏ phía máy chủ có sẵn cho các phương ngữ mysqlclient, PyMySQL, mariadbconnector và cũng có thể có sẵn ở các phương ngữ khác. Điều này sử dụng cờ “buffered=True/False” nếu có hoặc bằng cách sử dụng một lớp như

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
03 hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
04 trong nội bộ

Con trỏ phía máy chủ được bật trên cơ sở mỗi câu lệnh bằng cách sử dụng tùy chọn thực thi kết nối

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
05

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
0

Lưu ý rằng một số loại câu lệnh SQL có thể không được hỗ trợ với con trỏ phía máy chủ;

bảng chữ cái

Lựa chọn bộ ký tự

Hầu hết các DBAPI của MySQL/MariaDB đều cung cấp tùy chọn đặt bộ ký tự máy khách cho kết nối. Điều này thường được phân phối bằng cách sử dụng thông số

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
06 trong URL, chẳng hạn như

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
1

Bộ ký tự này là bộ ký tự máy khách cho kết nối. Một số MySQL DBAPI sẽ mặc định giá trị này thành một giá trị chẳng hạn như

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
07 và một số cũng sẽ sử dụng cài đặt
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
08 trong tệp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
09. Tài liệu cho DBAPI đang sử dụng nên được tư vấn cho hành vi cụ thể

Mã hóa được sử dụng cho Unicode theo truyền thống là

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
10. Tuy nhiên, đối với phiên bản MySQL 5. 5. 3 và MariaDB 5. 5 trở đi, mã hóa dành riêng cho MySQL mới
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
11 đã được giới thiệu và kể từ MySQL 8. 0 một cảnh báo được máy chủ phát ra nếu
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
12 đơn giản được chỉ định trong bất kỳ chỉ thị phía máy chủ nào, được thay thế bằng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
13. Cơ sở lý luận cho mã hóa mới này là do mã hóa utf-8 kế thừa của MySQL chỉ hỗ trợ các điểm mã tối đa ba byte thay vì bốn. Do đó, khi giao tiếp với cơ sở dữ liệu MySQL hoặc MariaDB bao gồm các điểm mã có kích thước lớn hơn ba byte, bộ ký tự mới này được ưu tiên hơn, nếu được hỗ trợ bởi cả cơ sở dữ liệu cũng như DBAPI của máy khách, như trong

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
1

Tất cả các DBAPI hiện đại phải hỗ trợ bộ ký tự

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
31

Để sử dụng mã hóa

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
31 cho lược đồ đã được tạo bằng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
12 kế thừa, có thể cần phải thay đổi lược đồ MySQL/MariaDB và/hoặc cấu hình máy chủ

Xử lý cảnh báo dữ liệu nhị phân và Unicode

Phiên bản MySQL 5. 6, 5. 7 trở lên [không phải MariaDB tại thời điểm viết bài này] hiện đưa ra cảnh báo khi cố gắng chuyển dữ liệu nhị phân tới cơ sở dữ liệu, trong khi mã hóa bộ ký tự cũng được áp dụng, khi chính dữ liệu nhị phân không hợp lệ cho mã hóa đó

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
3

Cảnh báo này là do thư viện máy khách MySQL đang cố diễn giải chuỗi nhị phân dưới dạng đối tượng unicode ngay cả khi kiểu dữ liệu như

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
17 đang được sử dụng. Để giải quyết vấn đề này, câu lệnh SQL yêu cầu phải có một "bộ giới thiệu bộ ký tự" nhị phân trước bất kỳ giá trị không phải NULL nào hiển thị như thế này

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
4

Các bộ giới thiệu bộ ký tự này được trình điều khiển DBAPI cung cấp, giả sử sử dụng mysqlclient hoặc PyMySQL [cả hai đều được khuyến nghị]. Thêm tham số chuỗi truy vấn

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
18 vào URL để sửa cảnh báo này

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
5

Cờ

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
19 có thể được hoặc không được hỗ trợ bởi các trình điều khiển MySQL khác

Bản thân SQLAlchemy không thể hiển thị tiền tố

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
20 này một cách đáng tin cậy, vì nó không hoạt động với giá trị NULL, giá trị hợp lệ để được gửi dưới dạng tham số ràng buộc. Vì trình điều khiển MySQL hiển thị các tham số trực tiếp vào chuỗi SQL, nên đây là nơi hiệu quả nhất để chuyển từ khóa bổ sung này

Kiểu trích dẫn ANSI

MySQL / MariaDB có hai loại định danh "kiểu trích dẫn", một loại sử dụng dấu gạch ngược và loại kia sử dụng dấu ngoặc kép, e. g.

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
21 so với.
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
22. Tất cả các phương ngữ MySQL phát hiện phiên bản nào đang được sử dụng bằng cách kiểm tra giá trị của sql_mode khi kết nối được thiết lập lần đầu với một
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
67 cụ thể. Kiểu trích dẫn này phát huy tác dụng khi hiển thị tên bảng và cột cũng như khi phản ánh cấu trúc cơ sở dữ liệu hiện có. Quá trình phát hiện hoàn toàn tự động và không cần cấu hình đặc biệt để sử dụng kiểu trích dẫn

Thay đổi sql_mode

MySQL hỗ trợ hoạt động ở nhiều Chế độ SQL Máy chủ cho cả Máy chủ và Máy khách. Để thay đổi

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
24 cho một ứng dụng nhất định, nhà phát triển có thể tận dụng hệ thống Sự kiện của SQLAlchemy

Trong ví dụ sau, hệ thống sự kiện được sử dụng để đặt

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
24 trên các sự kiện
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
26 và
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
27

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
6

Trong ví dụ minh họa ở trên, sự kiện “kết nối” sẽ gọi câu lệnh “SET” trên kết nối tại thời điểm một kết nối DBAPI cụ thể được tạo lần đầu tiên cho một Nhóm nhất định, trước khi kết nối được cung cấp cho nhóm kết nối. Ngoài ra, vì chức năng đã được đăng ký với

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
28, nên nó sẽ được thêm vào danh sách nội bộ của các chức năng đã đăng ký

Phần mở rộng SQL MySQL / MariaDB

Nhiều phần mở rộng SQL của MySQL / MariaDB được xử lý thông qua chức năng chung của SQLAlchemy và hỗ trợ toán tử

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
7

Và tất nhiên, bất kỳ câu lệnh SQL hợp lệ nào cũng có thể được thực thi dưới dạng một chuỗi

Hiện có một số hỗ trợ trực tiếp hạn chế cho các phần mở rộng MySQL/MariaDB cho SQL

CHÈN/XÓA…TRẢ LẠI

Phương ngữ MariaDB hỗ trợ 10. 5+ của

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
29 và
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
30 [10. 0+] cú pháp.
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
29 có thể được sử dụng tự động trong một số trường hợp để tìm nạp các mã định danh mới được tạo thay cho cách tiếp cận truyền thống sử dụng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
32, tuy nhiên, hiện tại,
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
32 vẫn được ưu tiên cho các trường hợp một câu lệnh đơn giản vì hiệu suất tốt hơn

Để chỉ định mệnh đề

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
34 rõ ràng, hãy sử dụng phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
35 trên cơ sở từng câu lệnh

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
8

Mới trong phiên bản 2. 0. Đã thêm hỗ trợ cho MariaDB RETURNING

số lượng hàng

SQLAlchemy chuẩn hóa thuộc tính DBAPI

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
36 thành định nghĩa thông thường về “số lượng hàng khớp với câu lệnh CẬP NHẬT hoặc XÓA”. Điều này mâu thuẫn với cài đặt mặc định trên hầu hết các trình điều khiển MySQL DBAPI, đó là “số hàng thực sự được sửa đổi/xóa”. Vì lý do này, các phương ngữ MySQL của SQLAlchemy luôn thêm cờ
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
37 hoặc bất kỳ thứ gì tương đương với phương ngữ đích khi kết nối. Cài đặt này hiện được mã hóa cứng

MySQL / MariaDB- Tùy chọn chỉ mục cụ thể

Có sẵn các tiện ích mở rộng dành riêng cho MySQL và MariaDB cho cấu trúc

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
38

Độ dài chỉ số

Cả MySQL và MariaDB đều cung cấp tùy chọn để tạo các mục nhập chỉ mục với độ dài nhất định, trong đó “độ dài” đề cập đến số lượng ký tự hoặc byte trong mỗi giá trị sẽ trở thành một phần của chỉ mục. SQLAlchemy cung cấp tính năng này thông qua các tham số

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
39 và/hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
40

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
9

Độ dài tiền tố được cung cấp bằng ký tự cho các loại chuỗi không nhị phân và bằng byte cho các loại chuỗi nhị phân. Giá trị được truyền cho đối số từ khóa phải là một số nguyên [và do đó, chỉ định cùng một giá trị độ dài tiền tố cho tất cả các cột của chỉ mục] hoặc một lệnh trong đó các khóa là tên cột và giá trị là giá trị độ dài tiền tố cho các cột tương ứng. MySQL và MariaDB chỉ cho phép độ dài cho một cột của chỉ mục nếu nó dành cho CHAR, VARCHAR, TEXT, BINARY, VARBINARY và BLOB

Tiền tố chỉ mục

Công cụ lưu trữ MySQL cho phép bạn chỉ định tiền tố chỉ mục khi tạo chỉ mục. SQLAlchemy cung cấp tính năng này thông qua tham số

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
41 trên
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
38

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
10

Giá trị được chuyển đến đối số từ khóa sẽ được chuyển đơn giản đến CREATE INDEX bên dưới, do đó, nó phải là tiền tố chỉ mục hợp lệ cho công cụ lưu trữ MySQL của bạn

Các loại chỉ mục

Một số công cụ lưu trữ MySQL cho phép bạn chỉ định loại chỉ mục khi tạo ràng buộc chỉ mục hoặc khóa chính. SQLAlchemy cung cấp tính năng này thông qua tham số

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
43 trên
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
38

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
11

Cũng như tham số

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
43 trên
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
46

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
12

Giá trị được chuyển đến đối số từ khóa sẽ được chuyển đơn giản đến mệnh đề CREATE INDEX hoặc PRIMARY KEY bên dưới, do đó, nó phải là loại chỉ mục hợp lệ cho công cụ lưu trữ MySQL của bạn

Thông tin thêm có thể được tìm thấy tại

https. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/tạo-chỉ mục. html

https. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/tạo bảng. html

Trình phân tích cú pháp chỉ mục

TẠO CHỈ SỐ FULLTEXT trong MySQL cũng hỗ trợ tùy chọn “VỚI PARSER”. Điều này có sẵn bằng cách sử dụng đối số từ khóa

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
47

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
13

Khóa ngoại của MySQL/MariaDB

Hành vi của MySQL và MariaDB liên quan đến khóa ngoại có một số lưu ý quan trọng

Đối số khóa ngoại cần tránh

Cả MySQL và MariaDB đều không hỗ trợ các đối số khóa ngoại “DEFERRABLE”, “INITIALLY” hoặc “MATCH”. Sử dụng đối số từ khóa

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
48 hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
49 với
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
50 hoặc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
51 sẽ có tác dụng khiến các từ khóa này được hiển thị trong biểu thức DDL, sau đó sẽ gây ra lỗi trên MySQL hoặc MariaDB. Để sử dụng các từ khóa này trên khóa ngoại trong khi chúng bị bỏ qua trên phần phụ trợ MySQL/MariaDB, hãy sử dụng quy tắc biên dịch tùy chỉnh

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
14

Từ khóa “MATCH” trên thực tế còn quỷ quyệt hơn và rõ ràng là không được SQLAlchemy cho phép kết hợp với các chương trình phụ trợ MySQL hoặc MariaDB. Đối số này bị MySQL/MariaDB âm thầm bỏ qua, nhưng ngoài ra, các tùy chọn BẬT CẬP NHẬT và BẬT XÓA cũng có tác dụng bị bỏ qua bởi chương trình phụ trợ. Do đó, MATCH không bao giờ được sử dụng với các chương trình phụ trợ MySQL/MariaDB;

Phản ánh các ràng buộc khóa ngoại

Không phải tất cả các công cụ lưu trữ MySQL/MariaDB đều hỗ trợ khóa ngoại. Khi sử dụng công cụ lưu trữ MySQL

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
44 rất phổ biến, thông tin được tải bằng cách phản chiếu bảng sẽ không bao gồm các khóa ngoại. Đối với các bảng này, bạn có thể cung cấp một
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
50 tại thời điểm phản ánh

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
15

Các ràng buộc và phản ánh duy nhất của MySQL / MariaDB

SQLAlchemy hỗ trợ cả cấu trúc

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
38 với cờ
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
55, biểu thị chỉ mục ĐỘC ĐÁO, cũng như cấu trúc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
56, biểu thị ràng buộc ĐỘC ĐÁO. Cả hai đối tượng/cú pháp đều được MySQL/MariaDB hỗ trợ khi phát ra DDL để tạo các ràng buộc này. Tuy nhiên, MySQL/MariaDB không có cấu trúc ràng buộc duy nhất tách biệt với chỉ mục duy nhất;

Khi phản ánh các cấu trúc này, cả hai phương thức

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
57 và
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
58 sẽ trả về một mục nhập cho chỉ mục ĐỘC ĐÁO trong MySQL/MariaDB. Tuy nhiên, khi thực hiện phản ánh toàn bộ bảng bằng cách sử dụng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
59, cấu trúc
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
56 không phải là một phần của cấu trúc
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
47 được phản ánh đầy đủ trong bất kỳ trường hợp nào;

Cấu trúc MySQL SQL

Tên đối tượng Mô tả

cuộc thi đấu

Tạo một mệnh đề

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
65

lớp sqlalchemy. thổ ngữ. mysql. cuộc thi đấu

Tạo một mệnh đề

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
65

E. g

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
16

Sẽ tạo ra SQL giống như

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
17

Hàm

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
67 là một phiên bản độc lập của phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
68 có sẵn trên tất cả các biểu thức SQL, như khi sử dụng
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
68, nhưng cho phép chuyển nhiều cột

Thông số
  • cols – biểu thức cột để khớp với

  • chống lại - biểu thức được so sánh với

  • in_boolean_mode – boolean, đặt “chế độ boolean” thành true

  • in_natural_language_mode – boolean , đặt “ngôn ngữ tự nhiên” thành true

  • with_query_expansion – boolean, đặt “mở rộng truy vấn” thành true

phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
70in_boolean_mode[] → Selfmatch

Áp dụng công cụ sửa đổi “IN BOOLEAN MODE” cho biểu thức MATCH

trả lại

một phiên bản

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
71 mới với các sửa đổi được áp dụng

phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
70in_natural_language_mode[] → Selfmatch

Áp dụng công cụ sửa đổi “CHẾ ĐỘ NGÔN NGỮ TỰ NHIÊN” cho biểu thức MATCH

trả lại

một phiên bản

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
71 mới với các sửa đổi được áp dụng

thuộc tính
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
70inherit_cache. Tùy chọn[bool] = True

Cho biết liệu phiên bản

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
75 này có nên sử dụng sơ đồ tạo khóa bộ đệm được sử dụng bởi siêu lớp trực tiếp của nó hay không

Thuộc tính mặc định là

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
76, chỉ ra rằng một cấu trúc chưa tính đến việc cấu trúc đó có phù hợp để tham gia vào bộ nhớ đệm hay không;

Cờ này có thể được đặt thành

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
78 trên một lớp cụ thể, nếu SQL tương ứng với đối tượng không thay đổi dựa trên các thuộc tính cục bộ của lớp này chứ không phải lớp cha của nó

phương pháp
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
70with_query_expansion[] → Selfmatch

Áp dụng công cụ sửa đổi “VỚI MỞ RỘNG QUERY” cho biểu thức MATCH

trả lại

một phiên bản

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
71 mới với các sửa đổi được áp dụng

Các kiểu dữ liệu MySQL

Như với tất cả các phương ngữ SQLAlchemy, tất cả các loại UPPERCASE được biết là hợp lệ với MySQL đều có thể nhập được từ phương ngữ cấp cao nhất

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
18

Các loại dành riêng cho MySQL hoặc có các đối số xây dựng dành riêng cho MySQL, như sau

Tên đối tượng Mô tả

LỚN

Loại BIGINTEGER của MySQL

CHÚT

Loại BIT của MySQL

CHAR

Loại CHAR của MySQL, dành cho dữ liệu ký tự có độ dài cố định

NGÀY GIỜ

Loại DATETIME của MySQL

SỐ THẬP PHÂN

Loại DECIMAL của MySQL

ENUM

Loại MySQL ENUM

TRÔI NỔI

Loại FLOAT của MySQL

số nguyên

Loại INTEGER của MySQL

JSON

Loại JSON của MySQL

LONGBLOB

Loại LONGBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^32 byte

VĂN BẢN DÀI

Loại LONGTEXT của MySQL, cho văn bản tối đa 2^32 ký tự

VỪABLOB

Loại MEDIUMBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^24 byte

TRUNG BÌNH

loại MySQL TRUNG BÌNH

TRUNG BÌNH

Loại MEDIUMTEXT của MySQL, cho văn bản tối đa 2^24 ký tự

NCHAR

Loại NCHAR của MySQL

SỐ

Loại SỐ MySQL

NVARCHAR

Loại NVARCHAR của MySQL

CÓ THẬT

Loại MySQL THỰC SỰ

BỐ TRÍ

MySQL SET loại

NHỎ

Loại SMALLINTEGER của MySQL

THỜI GIAN

Loại THỜI GIAN của MySQL

DẤU THỜI GIAN

Loại DẤU THỜI GIAN của MySQL

TINYBLOB

Loại TINYBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^8 byte

TINYINT

Loại TINYINT của MySQL

TINYTEXT

Loại TINYTEXT của MySQL, cho văn bản tối đa 2^8 ký tự

VARCHAR

Loại VARCHAR của MySQL, cho dữ liệu ký tự có độ dài thay đổi

NĂM

Loại NĂM của MySQL, để lưu trữ byte đơn của năm 1901-2155

lớp sqlalchemy. thổ ngữ. mysql. LỚN

Loại BIGINTEGER của MySQL

phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
81__init__[display_width=None, **kw]

Xây dựng một BIGINTEGER

Thông số
  • display_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

lớp sqlalchemy. thổ ngữ. mysql. nhị phân

Kiểu BINARY của SQL

chữ ký lớp

lớp

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
82 [
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
83]

lớp sqlalchemy. thổ ngữ. mysql. CHÚT

Loại BIT của MySQL

Loại này dành cho MySQL 5. 0. 3 hoặc cao hơn cho MyISAM, và 5. 0. 5 trở lên cho MyISAM, MEMORY, InnoDB và BDB. Đối với các phiên bản cũ hơn, hãy sử dụng loại MSTinyInteger[]

phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
84__init__[length=None]

Xây dựng một BIT

Thông số

chiều dài - Tùy chọn, số lượng bit

lớp sqlalchemy. thổ ngữ. mysql. BÃI

Loại SQL BLOB

phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
85__init__[độ dài. Tùy chọn[int] = Không có]

kế thừa từ phương pháp

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
86 của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
17

Xây dựng một loại LargeBinary

Thông số

độ dài – tùy chọn, độ dài cho cột để sử dụng trong các câu lệnh DDL, đối với những loại nhị phân chấp nhận độ dài, chẳng hạn như loại BLOB của MySQL

lớp sqlalchemy. thổ ngữ. mysql. BOOLESE

Kiểu SQL BOOLESE

phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
88__init__[create_constraint. bool = Sai, tên. Tùy chọn[str] = Không, _create_events. bool = Đúng, _adapted_from. Tùy chọn[SchemaType] = Không có]

kế thừa từ phương pháp

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
89 của
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
90

Xây dựng một Boolean

Thông số
  • create_constraint –

    mặc định là Sai. Nếu boolean được tạo dưới dạng int/smallint, cũng tạo một ràng buộc KIỂM TRA trên bảng để đảm bảo giá trị là 1 hoặc 0

    Ghi chú

    chúng tôi đặc biệt khuyến nghị ràng buộc CHECK có tên rõ ràng để hỗ trợ các mối quan tâm về quản lý lược đồ. Điều này có thể được thiết lập bằng cách đặt tham số

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    91 hoặc bằng cách thiết lập quy ước đặt tên thích hợp;

    Thay đổi trong phiên bản 1. 4. - cờ này hiện được mặc định là Sai, có nghĩa là không có ràng buộc KIỂM TRA nào được tạo cho loại liệt kê không phải bản địa

  • tên - nếu ràng buộc KIỂM TRA được tạo, hãy chỉ định tên của ràng buộc

lớp sqlalchemy. thổ ngữ. mysql. CHAR

Loại CHAR của MySQL, dành cho dữ liệu ký tự có độ dài cố định

phương thức
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
92__init__[length=None, **kwargs]

Xây dựng CHAR

Thông số
  • độ dài – Độ dài dữ liệu tối đa, tính bằng ký tự

  • binary – Optional, use the default binary collation for the national character set. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, hãy sử dụng loại BINARY cho dữ liệu nhị phân

  • collation – Optional, request a particular collation. Phải phù hợp với bộ chữ quốc gia

class sqlalchemy. dialects. mysql. DATE

The SQL DATE type

Loại DATETIME của MySQL

Construct a MySQL DATETIME type

Thông số
  • fractional seconds precision value. MySQL 5. 6. 4 supports storage of fractional seconds; this parameter will be used when emitting DDL for the DATETIME type

    Ghi chú

    DBAPI driver support for fractional seconds may be limited; current support includes MySQL Connector/Python

class sqlalchemy. dialects. mysql. DECIMAL

Loại DECIMAL của MySQL

method
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
93__init__[precision=None, scale=None, asdecimal=True, **kw]

Construct a DECIMAL

Thông số
  • precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server

  • scale – The number of digits after the decimal point

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

class sqlalchemy. dialects. mysql. DOUBLE

Loại NHÂN ĐÔI MySQL

chữ ký lớp

class

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
94 [
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
95,
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
96]

method
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
97__init__[precision=None, scale=None, asdecimal=True, **kw]

Construct a DOUBLE

Ghi chú

The

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
98 type by default converts from float to Decimal, using a truncation that defaults to 10 digits. Specify either
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
99 or
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
100 in order to change this scale, or
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
101 to return values directly as Python floating points

Thông số
  • precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server

  • scale – The number of digits after the decimal point

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

class sqlalchemy. dialects. mysql. ENUM

Loại MySQL ENUM

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
102__init__[*enums, **kw]

Construct an ENUM

E. g

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
19

Thông số
  • enums –

    The range of valid values for this ENUM. Values in enums are not quoted, they will be escaped and surrounded by single quotes when generating the schema. This object may also be a PEP-435-compliant enumerated type

  • strict –

    This flag has no effect

    Changed in version The. MySQL ENUM type as well as the base Enum type now validates all Python data values

  • charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand

  • collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand

  • ascii – Defaults to False. short-hand for the

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    07 character set, generates ASCII in schema

  • unicode – Mặc định là Sai. viết tắt của bộ ký tự

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    104, tạo UNICODE trong lược đồ

  • nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự

lớp sqlalchemy. thổ ngữ. mysql. TRÔI NỔI

Loại FLOAT của MySQL

phương thức
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
105__init__[precision=None, scale=None, asdecimal=False, **kw]

Xây dựng một FLOAT

Thông số
  • precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server

  • scale – The number of digits after the decimal point

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

lớp sqlalchemy. thổ ngữ. mysql. số nguyên

Loại INTEGER của MySQL

phương thức
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
106__init__[display_width=None, **kw]

Xây dựng một INTEGER

Thông số
  • display_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

lớp sqlalchemy. thổ ngữ. mysql. JSON

Loại JSON của MySQL

MySQL hỗ trợ JSON kể từ phiên bản 5. 7. MariaDB hỗ trợ JSON [dưới dạng bí danh cho LONGTEXT] kể từ phiên bản 10. 2

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
107 được sử dụng tự động bất cứ khi nào kiểu dữ liệu cơ sở
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
107 được sử dụng đối với chương trình phụ trợ MySQL hoặc MariaDB

Xem thêm

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
107 - tài liệu chính cho kiểu dữ liệu JSON đa nền tảng chung

Loại

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
107 hỗ trợ tính bền vững của các giá trị JSON cũng như các thao tác chỉ mục cốt lõi được cung cấp bởi kiểu dữ liệu
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
107, bằng cách điều chỉnh các thao tác để hiển thị hàm
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
112 ở cấp cơ sở dữ liệu

lớp sqlalchemy. thổ ngữ. mysql. LONGBLOB

Loại LONGBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^32 byte

lớp sqlalchemy. thổ ngữ. mysql. VĂN BẢN DÀI

Loại LONGTEXT của MySQL, cho văn bản tối đa 2^32 ký tự

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
113__init__[**kwargs]

Tạo một LONGTEXT

Thông số
  • charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand

  • collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand

  • ascii – Defaults to False. short-hand for the

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    07 character set, generates ASCII in schema

  • unicode – Mặc định là Sai. viết tắt của bộ ký tự

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    104, tạo UNICODE trong lược đồ

  • quốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ

  • nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự

lớp sqlalchemy. thổ ngữ. mysql. VỪABLOB

Loại MEDIUMBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^24 byte

lớp sqlalchemy. thổ ngữ. mysql. TRUNG BÌNH

loại MySQL TRUNG BÌNH

phương pháp
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
116__init__[display_width=None, **kw]

Xây dựng một MEDIUMINTEGER

Thông số
  • display_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

class sqlalchemy. dialects. mysql. MEDIUMTEXT

Loại MEDIUMTEXT của MySQL, cho văn bản tối đa 2^24 ký tự

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
117__init__[**kwargs]

Xây dựng một MEDIUMTEXT

Thông số
  • charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand

  • collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand

  • ascii – Defaults to False. short-hand for the

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    07 character set, generates ASCII in schema

  • unicode – Mặc định là Sai. viết tắt của bộ ký tự

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    104, tạo UNICODE trong lược đồ

  • quốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ

  • nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự

lớp sqlalchemy. thổ ngữ. mysql. NCHAR

Loại NCHAR của MySQL

For fixed-length character data in the server’s configured national character set

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
120__init__[length=None, **kwargs]

Construct an NCHAR

Thông số
  • độ dài – Độ dài dữ liệu tối đa, tính bằng ký tự

  • binary – Optional, use the default binary collation for the national character set. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, hãy sử dụng loại BINARY cho dữ liệu nhị phân

  • collation – Optional, request a particular collation. Phải phù hợp với bộ chữ quốc gia

class sqlalchemy. dialects. mysql. NUMERIC

Loại SỐ MySQL

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
121__init__[precision=None, scale=None, asdecimal=True, **kw]

Construct a NUMERIC

Thông số
  • precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server

  • scale – The number of digits after the decimal point

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

lớp sqlalchemy. dialects. mysql. NVARCHAR

Loại NVARCHAR của MySQL

For variable-length character data in the server’s configured national character set

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
122__init__[length=None, **kwargs]

Construct an NVARCHAR

Thông số
  • độ dài – Độ dài dữ liệu tối đa, tính bằng ký tự

  • binary – Optional, use the default binary collation for the national character set. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, hãy sử dụng loại BINARY cho dữ liệu nhị phân

  • collation – Optional, request a particular collation. Phải phù hợp với bộ chữ quốc gia

class sqlalchemy. dialects. mysql. REAL

Loại MySQL THỰC SỰ

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
123__init__[precision=None, scale=None, asdecimal=True, **kw]

Construct a REAL

Ghi chú

The

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
124 type by default converts from float to Decimal, using a truncation that defaults to 10 digits. Specify either
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
99 or
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
100 in order to change this scale, or
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
101 to return values directly as Python floating points

Thông số
  • precision – Total digits in this number. If scale and precision are both None, values are stored to limits allowed by the server

  • scale – The number of digits after the decimal point

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

class sqlalchemy. dialects. mysql. SET

MySQL SET loại

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
128__init__[*values, **kw]

Construct a SET

E. g

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
30

The list of potential values is required in the case that this set will be used to generate DDL for a table, or if the

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
129 flag is set to True

Thông số
  • values – The range of valid values for this SET. The values are not quoted, they will be escaped and surrounded by single quotes when generating the schema

  • convert_unicode – Same flag as that of

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    130

  • collation – same as that of

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    131

  • charset – same as that of

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    132

  • ascii – same as that of

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    133

  • unicode – same as that of

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    134

  • binary – same as that of

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    135

  • retrieve_as_bitwise –

    if True, the data for the set type will be persisted and selected using an integer value, where a set is coerced into a bitwise mask for persistence. MySQL allows this mode which has the advantage of being able to store values unambiguously, such as the blank string

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    136. The datatype will appear as the expression
    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    137 in a SELECT statement, so that the value is coerced into an integer value in result sets. This flag is required if one wishes to persist a set that can store the blank string
    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    136 as a value

    Warning

    When using

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    129, it is essential that the list of set values is expressed in the exact same order as exists on the MySQL database

class sqlalchemy. dialects. mysql. SMALLINT

Loại SMALLINTEGER của MySQL

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
140__init__[display_width=None, **kw]

Construct a SMALLINTEGER

Thông số
  • display_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

class sqlalchemy. dialects. mysql. TEXT

MySQL TEXT type, for text up to 2^16 characters

chữ ký lớp

class

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
141 [
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
142,
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
143]

phương thức
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
144__init__[length=None, **kw]

Construct a TEXT

Thông số
  • length – Optional, if provided the server may optimize storage by substituting the smallest TEXT type sufficient to store

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    145 characters

  • charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand

  • collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand

  • ascii – Defaults to False. short-hand for the

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    07 character set, generates ASCII in schema

  • unicode – Mặc định là Sai. viết tắt của bộ ký tự

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    104, tạo UNICODE trong lược đồ

  • quốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ

  • nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự

Loại THỜI GIAN của MySQL

Construct a MySQL TIME type

Thông số
  • fractional seconds precision value. MySQL 5. 6 supports storage of fractional seconds; this parameter will be used when emitting DDL for the TIME type

    Ghi chú

    DBAPI driver support for fractional seconds may be limited; current support includes MySQL Connector/Python

Loại DẤU THỜI GIAN của MySQL

Construct a MySQL TIMESTAMP type

Thông số
  • fractional seconds precision value. MySQL 5. 6. 4 supports storage of fractional seconds; this parameter will be used when emitting DDL for the TIMESTAMP type

    Ghi chú

    DBAPI driver support for fractional seconds may be limited; current support includes MySQL Connector/Python

class sqlalchemy. dialects. mysql. TINYBLOB

Loại TINYBLOB của MySQL, cho dữ liệu nhị phân lên tới 2^8 byte

class sqlalchemy. dialects. mysql. TINYINT

Loại TINYINT của MySQL

method
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
148__init__[display_width=None, **kw]

Construct a TINYINT

Thông số
  • display_width – Tùy chọn, chiều rộng hiển thị tối đa cho số này

  • không dấu – một boolean, tùy chọn

  • zerofill – Tùy chọn. Nếu đúng, các giá trị sẽ được lưu trữ dưới dạng các chuỗi được đệm bên trái bằng số không. Lưu ý rằng điều này không ảnh hưởng đến các giá trị được API cơ sở dữ liệu cơ bản trả về, các giá trị này tiếp tục ở dạng số

class sqlalchemy. dialects. mysql. TINYTEXT

Loại TINYTEXT của MySQL, cho văn bản tối đa 2^8 ký tự

phương thức
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
149__init__[**kwargs]

Xây dựng một TINYTEXT

Thông số
  • charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand

  • collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand

  • ascii – Defaults to False. short-hand for the

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    07 character set, generates ASCII in schema

  • unicode – Mặc định là Sai. viết tắt của bộ ký tự

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    104, tạo UNICODE trong lược đồ

  • quốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ

  • nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự

lớp sqlalchemy. thổ ngữ. mysql. BIẾN THÂN

Kiểu VARBINARY của SQL

chữ ký lớp

lớp

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
152 [
engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
83]

lớp sqlalchemy. thổ ngữ. mysql. VARCHAR

Loại VARCHAR của MySQL, cho dữ liệu ký tự có độ dài thay đổi

phương thức
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
154__init__[length=None, **kwargs]

Xây dựng một VARCHAR

Thông số
  • charset – Optional, a column-level character set for this string value. Takes precedence to ‘ascii’ or ‘unicode’ short-hand

  • collation – Optional, a column-level collation for this string value. Takes precedence to ‘binary’ short-hand

  • ascii – Defaults to False. short-hand for the

    engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
    07 character set, generates ASCII in schema

  • unicode – Mặc định là Sai. viết tắt của bộ ký tự

    SELECT test . t1 . i FROM t1;
    +------+
    | i    |
    +------+
    |   10 |
    +------+
    
    104, tạo UNICODE trong lược đồ

  • quốc gia – Tùy chọn. Nếu đúng, hãy sử dụng bộ ký tự quốc gia được định cấu hình của máy chủ

  • nhị phân – Mặc định là Sai. nói ngắn gọn, hãy chọn loại đối chiếu nhị phân phù hợp với bộ ký tự của cột. Tạo BINARY trong lược đồ. Điều này không ảnh hưởng đến loại dữ liệu được lưu trữ, chỉ ảnh hưởng đến đối chiếu dữ liệu ký tự

lớp sqlalchemy. thổ ngữ. mysql. YEAR

Loại NĂM của MySQL, để lưu trữ byte đơn của năm 1901-2155

MySQL DML Constructs

Tên đối tượng Mô tả

insert[table]

Construct a MySQL/MariaDB-specific variant

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
157 construct

Insert

Việc triển khai INSERT dành riêng cho MySQL

function sqlalchemy. dialects. mysql. insert[table]

Construct a MySQL/MariaDB-specific variant

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
157 construct

The

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
157 construct includes additional methods
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
160

class sqlalchemy. dialects. mysql. Insert

Việc triển khai INSERT dành riêng cho MySQL

Adds methods for MySQL-specific syntaxes such as ON DUPLICATE KEY UPDATE

The

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
157 object is created using the
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
162 function

attribute
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
163inherit_cache. Optional[bool] = False

Cho biết liệu phiên bản

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
75 này có nên sử dụng sơ đồ tạo khóa bộ đệm được sử dụng bởi siêu lớp trực tiếp của nó hay không

Thuộc tính mặc định là

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
76, chỉ ra rằng một cấu trúc chưa tính đến việc cấu trúc đó có phù hợp để tham gia vào bộ nhớ đệm hay không;

Cờ này có thể được đặt thành

engine = create_engine["mariadb+pymysql://user:pass@some_mariadb/dbname?charset=utf8mb4"]
78 trên một lớp cụ thể, nếu SQL tương ứng với đối tượng không thay đổi dựa trên các thuộc tính cục bộ của lớp này chứ không phải lớp cha của nó

attribute
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
163inserted

Provide the “inserted” namespace for an ON DUPLICATE KEY UPDATE statement

MySQL’s ON DUPLICATE KEY UPDATE clause allows reference to the row that would be inserted, via a special function called

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
169. This attribute provides all columns in this row to be referenceable such that they will render within a
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
169 function inside the ON DUPLICATE KEY UPDATE clause. The attribute is named
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
171 so as not to conflict with the existing
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
172 method

Tip

The

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
173 attribute is an instance of
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
174, which provides an interface the same as that of the
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
175 collection described at Accessing Tables and Columns. With this collection, ordinary names are accessible like attributes [e. g.
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
176], but special names and dictionary method names should be accessed using indexed access, such as
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
177 or
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
178. See the docstring for
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
174 for further examples

Specifies the ON DUPLICATE KEY UPDATE clause

Thông số

Warning

This dictionary does not take into account Python-specified default UPDATE values or generation functions, e. g. those specified using

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
180. These values will not be exercised for an ON DUPLICATE KEY UPDATE style of UPDATE, unless values are manually specified here

Thông số

As an alternative to passing key/value parameters, a dictionary or list of 2-tuples can be passed as a single positional argument

Passing a single dictionary is equivalent to the keyword argument form

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
31

Passing a list of 2-tuples indicates that the parameter assignments in the UPDATE clause should be ordered as sent, in a manner similar to that described for the

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
181 construct overall in Parameter Ordered Updates

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
32

Changed in version 1. 3. parameters can be specified as a dictionary or list of 2-tuples; the latter form provides for parameter ordering

mysqlclient [fork of MySQL-Python]

Support for the MySQL / MariaDB database via the mysqlclient [maintained fork of MySQL-Python] driver

DBAPI

Documentation and download information [if applicable] for mysqlclient [maintained fork of MySQL-Python] is available at. https. //pypi. org/project/mysqlclient/

Connecting

Connect String

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
33

Driver Status

The mysqlclient DBAPI is a maintained fork of the MySQL-Python DBAPI that is no longer maintained. mysqlclient supports Python 2 and Python 3 and is very stable

bảng chữ cái

Please see Unicode for current recommendations on unicode handling

SSL Connections

The mysqlclient and PyMySQL DBAPIs accept an additional dictionary under the key “ssl”, which may be specified using the

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
182 dictionary

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
34

For convenience, the following keys may also be specified inline within the URL where they will be interpreted into the “ssl” dictionary automatically. “ssl_ca”, “ssl_cert”, “ssl_key”, “ssl_capath”, “ssl_cipher”, “ssl_check_hostname”. An example is as follows

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
35

If the server uses an automatically-generated certificate that is self-signed or does not match the host name [as seen from the client], it may also be necessary to indicate

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
183

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
36

Using MySQLdb with Google Cloud SQL

Google Cloud SQL now recommends use of the MySQLdb dialect. Connect using a URL like the following

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
37

Con trỏ phía máy chủ

The mysqldb dialect supports server-side cursors. See Server Side Cursors

PyMySQL

Support for the MySQL / MariaDB database via the PyMySQL driver

DBAPI

Documentation and download information [if applicable] for PyMySQL is available at. https. //pymysql. readthedocs. io/

Connecting

Connect String

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
38

bảng chữ cái

Please see Unicode for current recommendations on unicode handling

SSL Connections

The PyMySQL DBAPI accepts the same SSL arguments as that of MySQLdb, described at SSL Connections. See that section for examples

MySQL-Python Compatibility

The pymysql DBAPI is a pure Python port of the MySQL-python [MySQLdb] driver, and targets 100% compatibility. Hầu hết các ghi chú hành vi cho MySQL-python cũng áp dụng cho trình điều khiển pymysql

MariaDB-Connector

Support for the MySQL / MariaDB database via the MariaDB Connector/Python driver

DBAPI

Tài liệu và thông tin tải xuống [nếu có] cho MariaDB Connector/Python có sẵn tại. https. //pypi. tổ chức/dự án/mariadb/

Connecting

Connect String

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
39

Driver Status

Trình kết nối MariaDB/Python cho phép các chương trình Python truy cập cơ sở dữ liệu MariaDB và MySQL bằng API tuân thủ API Python DB 2. 0 [PEP-249]. Nó được viết bằng C và sử dụng thư viện máy khách MariaDB Connector/C để liên lạc với máy chủ máy khách

Lưu ý rằng trình điều khiển mặc định cho URI kết nối

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
184 tiếp tục là
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
185. Cần có
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
186 để sử dụng trình điều khiển này

Trình kết nối MySQL

Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển MySQL Connector/Python

DBAPI

Tài liệu và thông tin tải xuống [nếu có] cho MySQL Connector/Python có sẵn tại. https. //pypi. org/dự án/mysql-connector-python/

Connecting

Connect String

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
0

Ghi chú

Trình kết nối MySQL/Python DBAPI đã gặp nhiều vấn đề kể từ khi phát hành, một số vấn đề có thể vẫn chưa được giải quyết và phương ngữ mysqlconnector không được kiểm tra như một phần của quá trình tích hợp liên tục của SQLAlchemy. Các phương ngữ MySQL được đề xuất là mysqlclient và PyMySQL

không đồng bộ

Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển không đồng bộ

DBAPI

Tài liệu và thông tin tải xuống [nếu có] cho asyncmy có sẵn tại. https. //github. com/long2ice/không đồng bộ

Connecting

Connect String

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
1

Ghi chú

Phương ngữ không đồng bộ kể từ tháng 9 năm 2021 đã được thêm vào để cung cấp khả năng tương thích không đồng bộ của MySQL/MariaDB do trình điều khiển cơ sở dữ liệu aiomysql đã trở nên không rõ ràng, tuy nhiên, bản thân phương ngữ không đồng bộ là rất mới

Sử dụng lớp hòa giải asyncio đặc biệt, phương ngữ không đồng bộ có thể được sử dụng làm phần phụ trợ cho gói tiện ích mở rộng asyncio SQLAlchemy

Phương ngữ này thường chỉ được sử dụng với chức năng tạo động cơ

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
187

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
2

aiomysql

Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển aiomysql

DBAPI

Tài liệu và thông tin tải xuống [nếu có] cho aiomysql có sẵn tại. https. //github. com/aio-libs/aiomysql

Connecting

Connect String

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
3

Warning

Phương ngữ aiomysql hiện không được thử nghiệm như một phần tích hợp liên tục của SQLAlchemy. Kể từ tháng 9 năm 2021, trình điều khiển dường như không được bảo trì và không còn hoạt động cho Python phiên bản 3. 10 và cũng phụ thuộc vào phiên bản PyMySQL đã lỗi thời đáng kể. Vui lòng tham khảo phương ngữ asyncmy để biết chức năng asyncio hiện tại của MySQL/MariaDB

Phương ngữ aiomysql là phương ngữ asyncio Python thứ hai của SQLAlchemy

Sử dụng lớp hòa giải asyncio đặc biệt, phương ngữ aiomysql có thể được sử dụng làm phụ trợ cho gói tiện ích mở rộng asyncio SQLAlchemy

Phương ngữ này thường chỉ được sử dụng với chức năng tạo động cơ

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
187

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
4

cymysql

Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển CyMySQL

DBAPI

Tài liệu và thông tin tải xuống [nếu có] cho CyMySQL có sẵn tại. https. //github. com/nakagami/CyMySQL

Connecting

Connect String

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
5

Ghi chú

Phương ngữ CyMySQL không được kiểm tra như một phần tích hợp liên tục của SQLAlchemy và có thể có các sự cố chưa được giải quyết. Các phương ngữ MySQL được đề xuất là mysqlclient và PyMySQL

pyodbc

Hỗ trợ cơ sở dữ liệu MySQL / MariaDB thông qua trình điều khiển PyODBC

DBAPI

Tài liệu và thông tin tải xuống [nếu có] cho PyODBC có sẵn tại. https. //pypi. tổ chức/dự án/pyodbc/

Connecting

Connect String

Table['mytable', metadata,
      Column['data', String[32]],
      mysql_engine='InnoDB',
      mysql_charset='utf8mb4',
      mysql_key_block_size="1024"
     ]
6

Ghi chú

Phương ngữ PyODBC cho MySQL không được kiểm tra như một phần tích hợp liên tục của SQLAlchemy. Các phương ngữ MySQL được đề xuất là mysqlclient và PyMySQL. Tuy nhiên, nếu bạn muốn sử dụng phương ngữ mysql+pyodbc và yêu cầu hỗ trợ đầy đủ cho

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
31 ký tự [bao gồm các ký tự bổ sung như biểu tượng cảm xúc], hãy đảm bảo sử dụng bản phát hành hiện tại của Trình kết nối MySQL/ODBC và chỉ định “ANSI” [không phải “Unicode”]

Độ dài tối đa của tên bảng trong MySQL là bao nhiêu?

Tìm hiểu MySQL từ đầu về Khoa học dữ liệu và Phân tích . 0. 64 characters long according to MySQl version 8.0.

SQL có độ dài tên bảng tối đa là bao nhiêu?

Tên bảng rất quan trọng trong máy chủ SQL. Độ dài tối đa của ký tự tên bảng là 128 . Không có giới hạn cho việc tạo bảng trong máy chủ SQL.

Quy tắc đặt tên bảng trong MySQL là gì?

Theo mặc định, MySQL đặt tên cột và tên bảng trong dấu ngoặc kép. Tên bảng có thể sử dụng bất kỳ ký tự nào được phép trong tên tệp ngoại trừ dấu chấm hoặc dấu gạch chéo lên. Tên bảng phải có 32 ký tự trở xuống vì SAS không cắt bớt tên dài hơn

Làm thế nào lớn là quá lớn cho một bảng MySQL?

Biểu diễn bên trong của bảng MySQL có giới hạn kích thước hàng tối đa là 65.535 byte , ngay cả khi công cụ lưu trữ có khả năng hỗ trợ lớn hơn .

Chủ Đề