sql >> Database >  >> RDS >> Mysql

Het aanroepen van DATE_FORMAT() in MySQL vanuit Django mislukt

Ik vermoed dat het probleem zit in het procentteken (% ) in de vraagtekst. (Is dat niet een tijdelijke aanduiding voor een bindvariabele in Django?) b.v. als we een bindvariabele zouden gebruiken, zou dat er dan niet ongeveer zo uitzien?

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

Ik denk dat Django misschien je SQL-tekst scant en %w tegenkomt en verwachten dat dat een bindingsvariabele is. Ofwel dat, of het draait een sprintf stijlfunctie, en het tegenkomen van de %w en verwacht die tijdelijke aanduiding te vervangen door een argumentwaarde.

(Ik heb het niet getest, dus dit is slechts een idee, slechts een gok.)

Als een gok voor een tijdelijke oplossing, verdubbelt u misschien de procenttekens, hetzelfde krijgen we % literals via een sprintf:

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

Als dat niet werkt, is het misschien een backslash-teken, hetzelfde als we escapetekens in een reguliere expressie:

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

(Of misschien moet u de backslashes verdubbelen. Dit zijn slechts gissingen op basis van conventies die door andere software worden gebruikt.)



  1. Visuele database maken met MySQL Workbench

  2. ORA-01792:maximum aantal kolommen in een tabel of weergave is 1000 fout bij gebruik van WITH in sql

  3. Fatale fout opgetreden tijdens het uitvoeren van de opdracht. mysql-connector .net

  4. Oracle:Querytime-out instellen