sql >> Database >  >> RDS >> Mysql

Hoe een lege waarde op te slaan als een geheel getal

Een string is geen geheel getal; en een lege string is niet None of NULL . Wat u moet doen, is die gevallen opvangen waarin het veld leeg is en het vervolgens casten naar None .

foo = "something" # "something" is coming from your CSV file

try:
   val = int(foo)
except ValueError:
   # foo is something that cannot be converted to
   # a number. It could be an empty string, or a
   # string like 'hello'
   # provide a default value
   val = None

# Now use val to insert into the database
f = MyModel()
f.age = val
f.save()

blank is strikt voor front-end validatie; het heeft geen invloed op de databasekant:

null heeft daarentegen te maken met de database:

Een IntegerField vereist een waarde die kan worden omgezet in een geheel getal, dus wanneer u een lege tekenreeks doorgeeft, , het kan het niet casten en roept een uitzondering op. Als u in plaats daarvan None . invult , en je hebt age = models.IntegerField(null=True) , het weet het correct op te slaan.

Samenvattend:

  • age = models.IntegerField()

    Veld is verplicht en heeft een geldige integerwaarde nodig. Het accepteert geen None en hebben geen null-waarden in de database. Geldige waarden zijn -2147483648 tot 2147483647

  • age = models.IntegerField(null=True)

    Veld is verplicht (formuliervalidatie). Als het veld None . heeft als een waarde wordt deze vertaald naar NULL in de database.

  • age = models.IntegerField(blank=True, null=True)

    Veld is niet verplicht (formuliervalidatie). Als het veld wordt doorgegeven in None , het wordt vertaald naar NULL

  • age = models.IntegerField(blank=True)

    Veld is niet vereist (formuliervalidatie), maar er moet een geldige integerwaarde worden ingevoerd omdat de database geen null accepteert. Normaal gesproken zou je het hier een standaardwaarde geven met default=0 of laat een validatie uitvoeren voordat u de waarde naar de orm verzendt.



  1. PHP-coderingsfout bij het produceren van XML uit database

  2. Een inleiding tot zoeken in volledige tekst in MariaDB

  3. MySQL-substringextractie met scheidingsteken

  4. Is er een MySQL-optie/-functie om de geschiedenis van wijzigingen in records bij te houden?