Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Termasuk panggilan fungsi DB di python MySQLdb executemany()

Cara di bawah ini jauh dari ideal, tapi sayangnya hanya itu yang saya tahu.

Idenya adalah untuk membuat SQL secara manual, menggunakan connection.literal untuk menghindari argumen untuk Anda:

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)

Ini terlihat mengerikan, dan mungkin membuat kulit Anda merinding, tetapi jika Anda melihat di bawah tenda (di /usr/lib/pymodules/python2.6/MySQLdb/cursors.py) apa yang dilakukan MySQLdb di cursors.executemany , Saya pikir ini sejalan dengan apa yang dilakukan fungsi itu, dikurangi campur aduk karena regex cursors.insert_values tidak menguraikan tanda kurung bersarang dengan benar. (eek!)

Saya baru saja menginstal oursql , sebuah alternatif untuk MySQLdb, dan dengan senang hati saya laporkan bahwa

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

bekerja seperti yang diharapkan dengan 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. Bisakah saya menggunakan lapisan basis data Laravel secara mandiri?

  2. Ambil lebih dari 3 data dari mysql ke kotak centang

  3. Cara terbaik untuk memvalidasi input pengguna JDBC?

  4. Mencetak hasil kueri mysql dari variabel

  5. Indeks dan kunci utama multi kolom