我的sqlite3脚本有什么问题?

时间:2014-03-10 17:21:26

标签: python sqlite

c = conn.cursor()                                                       
c.executescript("""                                                     
    CREATE TABLE IF NOT EXISTS dvdlist (                                    
        title text,                                                         
        barcode,                                                            
        added_date text,                                                    
        out numeric,                                                        
        borrower text,                                                      
        price real                                                          
        );                                                                  

    CREATE TABLE IF NOT EXISTS userdb (                                     
        username text,                                                      
        password text,                                                      
        address text,                                                       
        phone text,                                                         
        email text,                                                         
        borrowed integer
        );                                                                  

    CREATE TABLE IF NOT EXISTS staffdb (                                    
        username text,                                                      
        password text,                                                      
        address text,                                                       
        phone text,                                                         
        email text,                                                         
        group integer
        );                                                                  
    """)

Traceback说:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "shopdatabase.py", line 52, in __init__
    self.__db_init()
  File "shopdatabase.py", line 108, in __db_init
    """)
sqlite3.OperationalError: near "group": syntax error

我在http://www.sqlite.org/datatype3.html查找了sqlite中的数据类型,我不太清楚发生了什么。请帮忙。

2 个答案:

答案 0 :(得分:2)

群组是reserved keywords之一。你不能这样使用它。

正如@MartijnPieters在回答中所述,你可以用引号括起group来解决问题。

答案 1 :(得分:2)

groupreserved keyword(它是SQL语言的一部分)。如果要将其用作列名,则需要引用它:

CREATE TABLE IF NOT EXISTS staffdb (                                    
    username text,                                                      
    password text,                                                      
    address text,                                                       
    phone text,                                                         
    email text,                                                         
    'group' integer
    );                                                                  

您可以使用单引号('group'),双引号("group")或方括号或反引号([group]`group`),但后两种形式是仅支持与不兼容的数据库引擎兼容。

您必须在SQL语句中的任何位置引用该名称:

SELECT 'group' FROM staffdb WHERE username=?

例如。