2016-03-20 10 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() 

QUESTION

現在のコードがエラーを生成しますsqliteの主キーは、テーブルのエラーに

"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" 

私はちょうど"INTEGER"field_type_1を変更すると、それが正常に動作を作成します。

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

答えて

2

を私は他の多くの例を見てきたし、INTEGER PRIMARY KEY

SQLiteバージョン3.8.7.1が含まれるように有効なようです主キーとして列を設定したい場合は、この構文を使用することをお勧めします。

# 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)) 

あなたはhere

+0

はあなたの助けをありがとう、この例を見ることができます –

0

:あなたは{FT1}の後にコンマが欠落している

おかげ