2016-03-20 9 views
0
import sqlite3 

# set database variables 
sqlite_db_filename = '/samba/anonymous/vacuum_control.sqlite' 
table_name = 'user_recipe' 
new_field_1 = 'recipe_id' 
field_type_1 = 'INTEGER PRIMARY KEY' 
new_field_2 = 'recipe_name' 
field_type_2 = 'TEXT' 
new_field_3 = 'use_vacuum' 
field_type_3 = 'INTEGER' 


# Connecting to the database file 
conn = sqlite3.connect(sqlite_db_filename) 
c = conn.cursor() 

# Creating a new SQLite table with x columns 

c.execute('CREATE TABLE {tn} ({nf1} {ft1} {nf2} {ft2})'\ 
    .format(tn=table_name, nf1=new_field_1, ft1=field_type_1, nf2=new_field_2, ft2=field_type_2)) 

# Committing changes and closing the connection to the database file 
conn.commit() 

FRAGE

Der aktuelle Code erzeugt die FehlerSQLite Primärschlüssel erstellen Tabellenfehler

"Traceback (most recent call last): 
    File "data_base_config.py", line 20, in <module> 
    .format(tn=table_name, nf1=new_field_1, ft1=field_type_1, nf2=new_field_2, ft2=field_type_2)) 
sqlite3.OperationalError: near "recipe_name": syntax error" 

Wenn ich field_type_1 ändern, um nur "INTEGER" es funktioniert gut. Ich habe an vielen anderen Beispielen sieht und es scheint, gültig INTEGER PRIMARY KEY

SQLite Version 3.8.7.1

Dank

Antwort

2

Sie fehlt das Komma nach {FT1} enthalten:

c.execute('CREATE TABLE {tn} ({nf1} {ft1}, {nf2} {ft2})'\ 
+0

Dank für Ihre Hilfe danken –

0

Ich bin mir nicht sicher, ob Sie nur die Spalte als Primärschlüssel festlegen möchten, dann schlage ich vor, diese Syntax zu verwenden.

# Creating a second table with 1 column and set it as PRIMARY KEY 
    # note that PRIMARY KEY column must consist of unique values! 
    c.execute('CREATE TABLE {tn} ({nf} {ft} PRIMARY KEY)'\ 
      .format(tn=table_name2, nf=new_field, ft=field_type)) 

können Sie sehen dieses Beispiel here

Verwandte Themen