Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Tôi sử dụng psycopg2 cho ứng dụng của mình. Mọi thứ đều ổn nhưng điều này: Khi tôi chèn một dữ liệu bao gồm một trích dẫn 'sau đó Python ném ngoại lệ bên dưới:' then python throw the exception below:

: syntax error at or near "s"

Và nội dung giống như "trang của đứa trẻ" này"Kid's page"

Tôi không thể tìm thấy một giải pháp để khắc phục vấn đề này. Tôi sử dụng các chữ Python theo nghĩa đen như:

"""INSERT INTO table (field_name) VALUES ('%s');"""

Tôi bắt được ngoại lệ và trả lại truy vấn. Tôi chạy truy vấn này từ vỏ posgtre và nó hoạt động tốt. Có gì sai với psycopg2?

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

HALFER

19.7K17 Huy hiệu vàng92 Huy hiệu bạc179 Huy hiệu đồng17 gold badges92 silver badges179 bronze badges

Đã hỏi ngày 27 tháng 12 năm 2013 lúc 14:15Dec 27, 2013 at 14:15

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

1

Chủ đề cũ, nhưng sau khi đọc điều này, tôi đã tìm thấy một giải pháp cho vấn đề này. Loại bỏ các trích dẫn đơn thường sẽ không hoạt động, vì chuỗi có thể chứa khoảng trắng. Nếu đó là trường hợp, bạn có thể thoát khỏi báo giá bằng cách thêm một trích dẫn khác vào chuỗi, ngay sau trích dẫn đơn hiện có: string.replace("'", "''"), vì vậy

Trang của đứa trẻ

sẽ trở thành

Trang của Kid

Vì vậy, nó sẽ cố gắng chèn """INSERT INTO table (field_name) VALUES ('Kid''s page');"""

Đã trả lời ngày 15 tháng 9 năm 2015 lúc 12:59Sep 15, 2015 at 12:59

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Erik Van de Venerik Van de VenErik van de Ven

4.4706 Huy hiệu vàng31 Huy hiệu bạc77 Huy hiệu đồng6 gold badges31 silver badges77 bronze badges

Chỉ cần xóa các trích dẫn xung quanh trình giữ chỗ biến ràng buộc %s:

"""INSERT INTO table (field_name) VALUES (%s);"""

PSYCOPG sẽ trích dẫn tất cả các giá trị biến ràng buộc cho bạn.

Đã trả lời ngày 27 tháng 12 năm 2013 lúc 15:23Dec 27, 2013 at 15:23

Fogfogfog

3.1441 Huy hiệu vàng24 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge24 silver badges30 bronze badges

Loại bỏ các trích dẫn xung quanh %s. Các tham số được trích dẫn, thoát tự động nếu bạn vượt qua các tham số truy vấn.

"INSERT INTO table (field_name) VALUES (%s)"

Đã trả lời ngày 27 tháng 12 năm 2013 lúc 14:16Dec 27, 2013 at 14:16

Falsetrufalsetrufalsetru

345K59 Huy hiệu vàng690 Huy hiệu bạc614 Huy hiệu đồng59 gold badges690 silver badges614 bronze badges

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Định nghĩa về báo giá thoát hiểm PostgreSQL

Thông thường các trích dẫn đơn và đôi thường được sử dụng với bất kỳ dữ liệu văn bản nào trong PostgreSQL. Để bỏ qua hoặc thoát khỏi báo giá đơn là một yêu cầu chung của tất cả các nhà phát triển cơ sở dữ liệu. & NBSP; Bằng cách sử dụng trích dẫn kép và dấu gạch chéo ngược, chúng ta có thể tránh được sự phức tạp của các trích dẫn đơn lẻ cũng như dễ đọc và bảo trì. Về cơ bản trong báo giá đơn PostgreSQL được sử dụng để xác định hằng số chuỗi khi một chuỗi có một trích dẫn duy nhất tại thời điểm đó bạn cần thay thế nó bằng một trích dẫn kép và điều chính về thoát một trích dẫn phụ thuộc vào phiên bản postgresql có nghĩa là bạn có thể sử dụng Một ký hiệu khác để thoát khỏi trích dẫn đơn từ cơ sở dữ liệu.

Syntax:

select ‘Text’ ‘Text’;

Explanation:

Trong cú pháp trên, chúng tôi sử dụng một câu lệnh Chọn để thoát một trích dẫn duy nhất với một trích dẫn kép như trong câu lệnh trên.

Một cách khác để thoát khỏi một trích dẫn duy nhất như sau.

select E ’Text\’Text’;

Explanation:

Trong cú pháp trên, chúng tôi sử dụng câu lệnh CHỌN nhưng cú pháp này có thể áp dụng cho các phiên bản cũ của hằng số chuỗi PostgreSQL với E và Backslash \ để thoát khỏi các trích dẫn đơn. Nhưng vấn đề chính với dấu gạch chéo ngược là khi chúng tôi thay thế một trích dẫn bằng một trích dẫn kép và nhiều dấu vết \, rất khó để đọc và duy trì, vì vậy, PostgreSQL phiên bản 8.0 giới thiệu trích dẫn đô la để tránh sự phức tạp của nhà phát triển.

Làm thế nào để & nbsp; thoát khỏi trích dẫn đơn trong postgresql?

Hãy xem làm thế nào chúng ta có thể thoát khỏi trích dẫn duy nhất trong PostgreSQL như sau.

Về cơ bản, một trích dẫn duy nhất được sử dụng để xác định mã thông báo là một chuỗi; Đây là bối cảnh được sử dụng trong postgresql cho các mục đích khác nhau. Khi chúng tôi viết bất kỳ văn bản nào trong một trích dẫn, nó được coi là đối tượng tham chiếu và định danh được biểu thị bằng cách sử dụng văn bản được trích dẫn kép. Ví dụ, giả sử tuyên bố của chúng tôi giống như

"""INSERT INTO table (field_name) VALUES ('%s');"""
0

trong đó chúng tôi sử dụng một trích dẫn duy nhất để làm thế nào chúng tôi có thể thoát khỏi một trích dẫn như sau

Chọn ‘Tôi cũng được chào đón trong Postgresql,;

Trong tuyên bố này, chúng tôi thoát khỏi một báo giá duy nhất bằng cách thay thế một báo giá kép như trong câu lệnh trên.

Ví dụ

Hãy để cố gắng hiểu làm thế nào chúng ta có thể thoát khỏi các trích dẫn đơn với sự trợ giúp của các ví dụ khác nhau như sau.

PostgreSQL đã cung cấp một tính năng $ Dollar mà không cần thoát một trích dẫn, vì vậy chúng ta có thể xác định một hàm hoặc tạo một hàm như sau.

"""INSERT INTO table (field_name) VALUES ('%s');"""
1

Explanation:

Trong ví dụ trên, chúng tôi tạo một tên hàm dưới dạng sample_function với các tham số khác nhau, chẳng hạn như tên của bạn như trong câu lệnh trên và nó trả về bằng cách sử dụng câu lệnh CHỌN có cùng tham số. Minh họa kết quả cuối cùng còn lại của thông báo trên bằng cách sử dụng ảnh chụp nhanh sau đây.

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Chức năng tương tự chúng tôi viết hoặc chúng tôi có thể nói rằng nó tương đương với một trích dẫn thoát.

"""INSERT INTO table (field_name) VALUES ('%s');"""
2

Explanation:

Xem ở đây trong ví dụ trên, chúng tôi tạo cùng một chức năng với cùng một tham số bằng cách sử dụng các trích dẫn kép. Nhưng khi chúng tôi so sánh cả hai tuyên bố thì chúng tôi nhận ra $$ Dollar là tốt hơn để đọc và hiểu.

"""INSERT INTO table (field_name) VALUES ('%s');"""
3

Explanation:

Trong ví dụ trên, chúng tôi đã tạo thêm một tên ví dụ dưới dạng sample_demo với các tham số khác nhau như được hiển thị trong câu lệnh trên và nó trả về văn bản kết quả. Minh họa kết quả cuối cùng còn lại của thông báo trên bằng cách sử dụng ảnh chụp nhanh sau đây.

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Khi chúng ta sử dụng các chức năng được tạo ở trên thì hãy để xem cách chúng ta có thể thoát khỏi các trích dẫn đơn từ chuỗi như sau.

Ví dụ 1

"""INSERT INTO table (field_name) VALUES ('%s');"""
4

Explanation:

Trong ví dụ trên, chúng tôi sử dụng cả Chức năng Sample_Demo và Chuỗi hằng số Sample_Function Xem ở đây, chúng tôi sử dụng biểu tượng đô la $ để thoát khỏi báo giá đơn. Minh họa & nbsp; còn lại & nbsp; kết quả cuối cùng & nbsp; của các trên & nbsp; thông báo & nbsp; bằng cách & nbsp; việc sử dụng & nbsp; ảnh chụp nhanh sau đây.

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Hãy để so sánh với một trích dẫn đơn lẻ

"""INSERT INTO table (field_name) VALUES ('%s');"""
5

Giải trình

Xem trong câu lệnh trên, chúng tôi sử dụng một trích dẫn kép để thoát khỏi các trích dẫn đơn nhưng rất khó để đọc và duy trì chuỗi, nó cũng làm tăng sự phức tạp của mã hóa nhưng khi chúng tôi chỉ định đồng đô la $ để có thể tốt hơn để so sánh các trích dẫn kép như được hiển thị Trong ví dụ trên.

Hãy cùng xem một ví dụ khác để thoát khỏi các trích dẫn đơn bằng cách sử dụng trích dẫn kép như sau.

Ví dụ #2

Đầu tiên, tạo một bảng bằng cách sử dụng câu lệnh CREATE TABLE như sau.

"""INSERT INTO table (field_name) VALUES ('%s');"""
6

Explanation:

Trong ví dụ trên, chúng tôi đã tạo một tên bảng dưới dạng sample_quote với hai thuộc tính như trong câu lệnh trên. Minh họa kết quả cuối cùng còn lại của thông báo trên bằng cách sử dụng ảnh chụp nhanh sau đây.

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Bây giờ chúng tôi chèn một số bản ghi bằng cách sử dụng chèn vào các câu lệnh như sau.

"""INSERT INTO table (field_name) VALUES ('%s');"""
7

Explanation:

Với sự trợ giúp của câu lệnh trên, chúng tôi chèn một số bản ghi như trong câu lệnh trên. Xem ở đây, chúng tôi sử dụng cả trích dẫn kép và e \ breckslash trong câu lệnh trên. Minh họa kết quả cuối cùng còn lại của thông báo trên bằng cách sử dụng ảnh chụp nhanh sau đây.

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Để xem tất cả dữ liệu từ sample_quote những người có (r) bằng cách sử dụng câu lệnh sau.

"""INSERT INTO table (field_name) VALUES ('%s');"""
8

Giải trình

Với sự trợ giúp của câu lệnh trên, chúng ta có thể thấy những tiêu đề có một ký tự trong một chuỗi. Minh họa kết quả cuối cùng còn lại của thông báo trên bằng cách sử dụng ảnh chụp nhanh sau đây.

Hướng dẫn python postgres escape single quote - trăn postgres thoát khỏi trích dẫn duy nhất

Sự kết luận

Chúng tôi hy vọng từ bài viết này mà bạn đã hiểu về trích dẫn đơn thoát hiểm PostgreSQL. Từ bài viết trên, chúng tôi đã học được trích dẫn cơ bản của PostgreSQL Escape Escape. Chúng tôi cũng đã phát hiện ra cách chúng tôi có thể thực thi chúng trong PostgreSQL với các ví dụ khác nhau về mọi kỹ thuật. Từ bài viết này, chúng tôi đã học được cách chúng tôi có thể xử lý việc thoát khỏi các trích dẫn duy nhất trong PostgreSQL.

Bài viết đề xuất

Đây là một hướng dẫn để báo giá đơn thoát hiểm PostgreSQL. Ở đây chúng tôi thảo luận về định nghĩa, cú pháp, làm thế nào để & nbsp; thoát khỏi trích dẫn đơn trong postgresql ?, và ví dụ với việc thực hiện mã. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm -

  1. PostgreSQL DateTime
  2. PostgreSQL OR
  3. PostgreSQL enum
  4. Bộ nhớ đệm Postgresql

Làm cách nào để thoát khỏi một trích dẫn duy nhất trong PostgreSQL?

Phương pháp đơn giản nhất để thoát khỏi các trích dẫn đơn trong SQL là sử dụng hai trích dẫn đơn. Ví dụ: nếu bạn muốn hiển thị giá trị O'Reilly, bạn sẽ sử dụng hai trích dẫn ở giữa thay vì một. Trích dẫn duy nhất là ký tự thoát trong Oracle, SQL Server, MySQL và PostgreSQL.use two single quotes. For example, if you wanted to show the value O'Reilly, you would use two quotes in the middle instead of one. The single quote is the escape character in Oracle, SQL Server, MySQL, and PostgreSQL.