Mysql
 sql >> Baza danych >  >> RDS >> Mysql

W tym wywołania funkcji DB w Pythonie MySQLdb executemany()

Poniższa metoda jest daleka od ideału, ale niestety jest to jedyny sposób, jaki znam.

Pomysł polega na ręcznym konstruowaniu kodu SQL przy użyciu connection.literal aby uciec od argumentów za ciebie:

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)

Wygląda to okropnie i może sprawić, że twoja skóra zacznie się czołgać, ale jeśli spojrzysz pod maskę (w /usr/lib/pymodules/python2.6/MySQLdb/cursors.py) na to, co MySQLdb robi w cursors.executemany , myślę, że jest to zgodne z tym, co robi ta funkcja, bez pomieszania z powodu wyrażenia regularnego cursors.insert_values niepoprawnie analizuje nawiasy zagnieżdżone. (eek!)

Właśnie zainstalowałem naszsql , alternatywa dla MySQLdb, i z przyjemnością informuję, że

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

działa zgodnie z oczekiwaniami z naszym SQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sprawdź, czy kolumna zawiera WSZYSTKIE wartości innej kolumny - Mysql

  2. skopiuj jedną kolumnę z jednej tabeli do drugiej

  3. Grupuj wiele wyników mysql według wartości jednej kolumny

  4. Jak dodać 1 godzinę do currrent_timestamp w mysql, która jest wartością domyślną?

  5. Konwertuj skrypt MySQL na SQL Server