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

Tài liệu khó hiểu về mysqldb của Python

Tôi đã học được điều này bằng cách xem trong /usr/lib/pymodules/python2.6/MySQLdb/connections.py để xem cách nó được gọi là connection.escape . Một chút dò xét xung quanh sẽ dẫn đến MySQLdb.converters.conversions . Đây là một đoạn mã:

{0: <class 'decimal.Decimal'>,
 1: <type 'int'>,
...
 <type 'dict'>: <built-in function escape_dict>,
 <type 'NoneType'>: <function None2NULL at 0xae9717c>,
 <type 'set'>: <function Set2Str at 0xae9709c>,
 <type 'str'>: <function Thing2Literal at 0xae971b4>,
 <type 'tuple'>: <built-in function escape_sequence>,
 <type 'object'>: <function Instance2Str at 0xae971ec>,
 <type 'unicode'>: <function Unicode2Str at 0xae9710c>,
 <type 'array.array'>: <function array2Str at 0xae9725c>,
 <type 'bool'>: <function Bool2Str at 0xae97294>}

Bạn có thể sử dụng nó như thế này:

import MySQLdb
import MySQLdb.converters
import datetime

now=datetime.datetime.now()
connection=MySQLdb.connect(
    host=HOST,user=USER,passwd=PASS,db=MYDB)
print(connection.escape((1,2,now),MySQLdb.converters.conversions))
# ('1', '2', "'2010-07-24 19:33:59'")

Tái bút. Về Bobby Tables:Để sử dụng MySQLdb bình thường, bạn không phải thoát các đối số theo cách thủ công. Chỉ sử dụng các đối số được tham số hóa khi gọi cursor.execute và MySQLdb sẽ tự động trích dẫn các đối số cho bạn.

Ví dụ:

sql='insert into students (name,grade,date) values (%s, %s, %s)'
args=("Robert'); DROP TABLE Students; --",60,now)   # no manual quotation necessary
cursor=connection.cursor()
cursor.execute(sql,args)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận kết quả truy vấn SQL mà không có định dạng bảng

  2. Tìm kiếm toàn văn bản MySql trong PHP bằng cách sử dụng chuỗi chứa từ khóa

  3. Loại bỏ các bản sao trong danh sách đối tượng bằng Python

  4. Mối quan hệ nhiều-nhiều của MySQL với NGOẠI KHÓA

  5. SQLAlchemy Reflection:Làm cách nào để truy vấn dữ liệu từ các cột cụ thể?