Python sqlite不是自动递增的

Python sqlite不是自动递增的,python,mysql,sql,sqlite,Python,Mysql,Sql,Sqlite,当我使用以下命令在SQLite3中创建我的表时,它不会自动递增ID,也不会将用户名作为主键,因为我可以使用相同的用户名输入多个用户,并且输入时不会出现问题 命令: CREATE TABLE 'users' ( 'id' INTEGER AUTO INCREMENT, 'username' TEXT NOT NULL, 'hash' TEXT, PRIMARY KEY ('id', 'username') ); 这里是一个控制台的输出,显示它正在做什么,您可

当我使用以下命令在SQLite3中创建我的表时,它不会自动递增ID,也不会将用户名作为主键,因为我可以使用相同的用户名输入多个用户,并且输入时不会出现问题

命令:

CREATE TABLE 'users' (
    'id' INTEGER AUTO INCREMENT, 
    'username' TEXT NOT NULL, 
    'hash' TEXT, 
    PRIMARY KEY ('id', 'username')
);
这里是一个控制台的输出,显示它正在做什么,您可以告诉它让我输入用户名cat两次,而不是根据自动增量为id赋值:

sqlite> CREATE TABLE 'users' ('id' INTEGER AUTO INCREMENT, 'username' TEXT NOT NULL, 'hash' TEXT, PRIMARY KEY ('id', 'username'));

sqlite> insert into users (username, hash) values ('cat', 'dog2');

sqlite> insert into users (username, hash) values ('cat', 'dog2');

sqlite> select * from users;                                                                                                                                     
id          username    hash      
----------  ----------  ----------

            cat         dog2      
            cat         dog2     

它是
自动增量
,而不是
自动增量
。此外,如果SQLite表中的字段具有
AUTOINCREMENT
属性,那么它也应该是
主键

CREATE TABLE 'users' (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, hash TEXT);

您不能使用带有
自动递增属性的字段作为复合键的一部分。

我不确定sqlite如何处理自动递增,但
主键(id,用户名)
应该确切地说,id和用户名一起构成PK;如果您希望用户名是唯一的,则只需在该字段上设置一个单独的唯一约束/键。