2015-10-26 157 views
-1
import sqlite3 
conn = sqlite3.connect('testDB.db') 
c = conn.cursor() 

def tableCreate(): 
c.execute("CREATE TABLE Students(stud_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
fname TEXT NOT NULL, lname TEXT NOT NULL, age INTEGER NOT NULL, FOREIGN 
KEY(BatchID) REFERENCES (Batch,BatchID))") 
c.execute("CREATE TABLE Batch(BatchID INTEGER PRIMARY KEY AUTOINCREMENT, 
Batch_year TEXT NOT NULL)") 
c.execute("CREATE TABLE Grades(Grade_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
stud_ID INTEGER NOT NULL, Grade INT NOT NULL)") 

运行该函数后,显示下面的错误。在谷歌尝试不同的代码 格式,但仍然无法正常工作。由于 外键错误,无法创建数据库。请指教。谢谢。在外壳上执行/运行功能时出现SQLite错误

sqlite3.OperationalError:近“(”:语法错误

+0

尝试三重引用'“”“sql语句”“”' – Busturdust

回答

1

这是一个语法错误,因为你的FOREIGN KEY子句格式不正确,你需要的格式是这样的:

FOREIGN KEY(local-column-name) 
     REFERENCES foreign-table-name(foreign-key-column-name) 

在你的情况,这可能适合你:

c.execute(""" 
    CREATE TABLE Students(
     stud_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
     fname TEXT NOT NULL, 
     lname TEXT NOT NULL, 
     age INTEGER NOT NULL, 
     BatchID INEGER NOT NULL, 
     FOREIGN KEY(BatchID) REFERENCES Batch(BatchID))""") 
相关问题