SQL中的操作错误

时间:2015-03-17 23:07:13

标签: python sql sqlite

我正在运行sqlite3但我不能,因为我的生活中解决了我的代码中出了什么问题。请记住,在数据库中创建其他表时,它不会崩溃。我的一部分怀疑它可能是SQL语句某处的大写情况,但几天前它正常工作。

创建表格功能

def create_table(db_name,table_name,sql):
    with sqlite3.connect(db_name) as db:
        cursor = db.cursor()
        cursor.execute("select name from sqlite_master where name=?",(table_name,))
        result = cursor.fetchall()
        keep_table = True
        if len(result) == 1:
            response = input("The table {0} already exists, do you wish to recreate (y/n): ".format(table_name)) #option to recreate the database
            if response == 'y':
                keep_table = False
                print("The {0} table will be recreated - all existing data will be lost".format(table_name))
                cursor.execute("drop table if exists {0}".format(table_name))
                db.commit()
            elif response == 'n':
                print("The existing table was kept")
            else:
                print("Incorrect input, please try again.") #validation measure
                if len(result) == 1:
                    response = input("The table {0} already exists, do you wish to recreate (y/n): ".format(table_name))
                    if response == 'y':
                        keep_table = False
                        print("The {0} table will be recreated - all existing data will be lost".format(table_name))
                        cursor.execute("drop table if exists {0}".format(table_name))
                        db.commit()
        else:
            keep_table = False
        if not keep_table:
            cursor.execute(sql)
            db.commit()

导致问题的表格?

def create_customer_table():
sql = """create table Customer
         (CustomerID integer,
          FirstName text,
          LastName text,
          Street text,
          Town text,
          Postcode text,
          TelephoneNumber text,             
          EmailAddress text
          primary key(CustomerID))"""
create_table(db_name, "Customer", sql)

*忽略它没有缩进的事实,它在我的程序中。

def create_customer_order_table():
    sql = """create table CustomerOrder
             (OrderID integer,
              CustomerID integer,
              Date date,
              Time integer
              primary key(OrderID)
              foreign key(CustomerID) references Customer(CustomerID))"""
    create_table(db_name, "CustomerOrder", sql)

以下是我收到的错误:

Traceback (most recent call last):
  File "/Users/X/Downloads/manage_table_March_2015.py", line 110, in <module>
    create_customer_table()
  File "/Users/X/Downloads/manage_table_March_2015.py", line 78, in create_customer_table
    create_table(db_name, "Customer", sql)
  File "/Users/X/Downloads/manage_table_March_2015.py", line 33, in create_table
    cursor.execute(sql)
ysqlite3.OperationalError: near "(": syntax error

0 个答案:

没有答案