Je n'ai pas encore l'habitude de faire les choses en python, mais je suis presque certain que le script suivant peut être condensé. Je ne cherche pas l'optimisation de la vitesse ici, je cherche un code plus lisible. Rends-le plus lent pour tout ce qui m'importe, mais quelles sont les façons de rendre ce look plus Python-esque. Je lis simplement dans un fichier csv rempli de codes postaux et remplit une base de données de 23 colonnes. Beaucoup de frappe. Je n'aime pas non plus les choses codant dur comme l'index de la rangée. En outre, multis = '% s,' * 23 suivi de multis = multis [: - 2] semble sale.ce script python peut être raccourci/optimisé, comment?
Dans l'attente de voir ce que certains d'entre vous peuvent trouver.
#!/usr/bin/python
import csv
import MySQLdb
db = MySQLdb.connect(host="localhost", user="root", db="test")
c = db.cursor()
f_csv = 'zip-codes-database-STANDARD.csv'
csvReader = csv.reader(open(f_csv))
ziplist = []
multis = '%s, '*23
multis = multis[:-2]
for row in csvReader:
c.execute("""INSERT INTO lock_zipcodes_complete
(`zipcode`, `city`, `state`, `county`, `areacode`,
`citytype`, `city_alias_abbreviation`,
`city_alias_name`, `latitude`, `longitude`, `timezone`,
`elevation`, `county_fips`, `dst`,
`preferred_last_line_key`, `classification_code`,
`multicounty`, `state_fips`, `city_state_key`,
`city_alias_code`, `primary_record`, `city_mixed_case`,
`city_alias_mixed_case`) VALUES(""" + multis + ')',
(row[0], row[1], row[2], row[3], row[4], row[5], row[6],
row[7], row[8], row[9], row[10], row[11], row[12],
row[13], row[14], row[15], row[16], row[17], row[18],
row[19], row[20], row[21], row[22]))
vous le souhaitez moins de 10 lignes de code !? –
Pas plus court, je cherchais juste des moyens de le rendre moins bavard. Je savais que la façon dont j'utilise la ligne de tuple ci-dessus est incorrecte. Aussi la chaîne multis. Je voulais juste des gourous python pour montrer un exemple de la façon dont ils changeraient pour que je puisse apprendre. – randombits
Aucune réponse à ce jour n'a expliqué pourquoi il en est ainsi, mais notez que votre requête court le risque d'une "attaque par injection SQL" et est généralement considérée comme un moyen très dangereux d'utiliser des bases de données. (Sûr dans ce cas si vous contrôlez les données d'entrée, mais une mauvaise habitude d'entrer.) –