2010-10-21 5 views
3

Je veux créer une table avec plusieurs colonnes, disons environ 100 colonnes, dans une base de données sqlite. Y a-t-il une meilleure solution que de nommer chaque colonne individuellement? Je suis en train de ce qui suit:Ajouter plusieurs colonnes à une base de données sqlite en python

conn = sqlite3.connect('trialDB') 
cur = conn.cursor() 

listOfVars = ("added0",) 
for i in range(1,100): 
    newVar = ("added" + str(i),) 
    listOfVars = listOfVars + newVar 
print listOfVars 

for i in listOfVars: 
    cur.execute('''ALTER TABLE testTable ADD COLUMN ? TEXT''',(i,)) 

conn.commit()  
cur.close() 
conn.close() 

Mais je reçois l'erreur suivante:

OperationalError: near "?": syntax error 

Quelqu'un peut-il s'il vous plaît suggérer comment je peux le faire? Merci!

+1

Je ne pense pas que les espaces réservés fonctionnent pour les noms de colonne ou de table. – SilentGhost

+0

Juste pour confirmer SilentGhost - les espaces réservés _definitely_ ne fonctionnent pas pour les noms de colonne ou de table. – Gretchen

+0

Merci, SilentGhost et Matthew – Curious2learn

Répondre

4

Je suppose que vous pourriez le faire à travers la mise en forme de chaîne, comme ceci:

for i in listOfVars: 
    cur.execute('''ALTER TABLE testTable ADD COLUMN %s TEXT''' % i) 

Mais ayant 100 colonnes dans un sqlite db est certainement pas commun, êtes-vous sûr d'avoir une bonne conception db?

+0

Je cours quelques simulations, dont chacune sort une matrice de données avec environ 1500 lignes et 200 colonnes. Si je publie les données dans un fichier .csv, il s'agit d'environ 3 Mo. Je me demandais si l'utilisation d'une base de données sqlite rendrait l'ensemble efficace. Merci pour votre réponse. – Curious2learn

Questions connexes