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

Memanggil DATE_FORMAT() di MySQL dari Django gagal

Dugaan saya adalah masalahnya ada pada tanda persen (% ) dalam teks kueri. (Bukankah itu tempat penampung variabel ikat di Django?) mis. jika kita akan menggunakan variabel bind, bukankah itu akan terlihat seperti ini?

SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;

Saya pikir mungkin Django sedang memindai teks SQL Anda dan menemukan %w dan mengharapkan itu menjadi variabel pengikat. Entah itu, atau menjalankan sprintf fungsi gaya, dan menemukan %w dan berharap untuk mengganti placeholder itu dengan nilai argumen.

(Saya belum menguji; jadi ini hanya ide, hanya tebakan.)

Sebagai tebakan untuk solusinya, mungkin Anda menggandakan tanda persen, sama seperti kita mendapatkan % literal melalui sprintf:

  query("SELECT ... ,'%%w') ...");

Jika itu tidak berhasil, maka mungkin itu adalah karakter garis miring terbalik, sama seperti kita menghindari karakter dalam ekspresi reguler:

  query("SELECT ... ,'\%w') ...");

(Atau, Anda mungkin perlu menggandakan garis miring terbalik. Ini hanya tebakan berdasarkan konvensi yang digunakan oleh perangkat lunak lain.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tentukan kolom untuk PDO::FETCH_KEY_PAIR

  2. Mengambil Data dari MySQL dalam batch melalui Python

  3. Koneksi JDBC MySQL menggunakan Unix Socket

  4. Cara meningkatkan kinerja kueri dalam pencarian admin Django pada bidang terkait (MySQL)

  5. beberapa nilai disimpan dalam satu kolom di database MySQL?