Mysql
 sql >> база данни >  >> RDS >> Mysql

Неясната документация на Python mysqldb

Научих това, като погледнах в /usr/lib/pymodules/python2.6/MySQLdb/connections.py, за да видя как се нарича connection.escape . Малко подсмърчане води доMySQLdb.converters.conversions . Ето един фрагмент:

{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>}

Можете да го използвате по следния начин:

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

PS Относно таблиците на Bobby:За нормално използване на MySQLdb, не е нужно ръчно да избягвате аргументи. Просто използвайте параметризирани аргументи, когато извиквате cursor.execute , и MySQLdb автоматично ще цитира аргументите вместо вас.

Например:

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. MySQL:транзакция в рамките на съхранена процедура

  2. mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows и т.н.... очаква параметър 1 да бъде ресурс

  3. Множество обединявания в MySQL таблица

  4. Как да добавите комбинирано правило за валидиране на уникални полета в Laravel 4

  5. Функциите за дата и час на MySQL не съществуват