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

Включително извиквания на DB функции в python MySQLdb executemany()

Методът по-долу е далеч от идеалния, но, за съжаление, това е единственият начин, който познавам.

Идеята е ръчно да се конструира SQL, като се използва connection.literal за да избягам от аргументите вместо вас:

cursor=connection.cursor()
args=[(1,'foo'),(2,'bar')]
sql=('INSERT INTO `foo` (`fooid`,`data`,`time_added`) VALUES '
     +','.join(
         ['(%s,%s,NOW())'%connection.literal(arg)
          for arg in args]))
cursor.execute(sql)

Това изглежда ужасно и може да накара кожата ви да пълзи, но ако погледнете под капака (в /usr/lib/pymodules/python2.6/MySQLdb/cursors.py) какво прави MySQLdb в cursors.executemany , мисля, че това е по същия начин като това, което тази функция прави, минус объркването поради регулярния израз cursors.insert_values не анализира правилно вложените скоби. (eek!)

Току-що инсталирах oursql , алтернатива на MySQLdb, и с удоволствие съобщавам за това

sql='INSERT INTO `foo` (`fooid`,`data`,`time_added`) VALUES (?,?,NOW())'
cursor.executemany(sql,args)

работи според очакванията с oursql.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намиране на среден SQL

  2. Отчитане на промените във времевата линия с MySQL

  3. Вмъкнете select MySQL с подготвени оператори

  4. Добавянето на mysql_real_escape_string() води до съхраняване на празни стойности в базата данни

  5. Добавяне на редове към mysql от динамични полета на jquery формуляр