如何使用AUTO_INCRMENT插入表?

问题描述 投票:0回答:1

我试图在新用户注册时将其插入到 MySQL 中的表中。我正在 PythonAnywhere 上使用 FlaskApp。

这是我的询问:

INSERT INTO user_profile (email, user_name, first_foo) VALUES (%s, %s, 0);

这是从我的flask_app代码运行的:

def connect_db(query, params):

    db_connection= MySQLdb.connect("<username>.mysql.eu.pythonanywhere-services.com","<username>","<password","<db_name>", cursorclass=MySQLdb.cursors.DictCursor)

    cursor=db_connection.cursor()
    cursor.execute(query, params)
    result = cursor.fetchone()

    return result

connect_db(query, (email, username,))

这是我的表格结构:

+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| user_id      | int         | NO   | PRI | NULL    | auto_increment |
| email        | varchar(50) | YES  | UNI | NULL    |                |
| user_name    | varchar(15) | YES  | UNI | NULL    |                |
| first_foo    | tinyint(1)  | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

不幸的是,我不断得到:

MySQLdb._exceptions.OperationalError: (1048, "Column 'user_id' cannot be null")

我尝试了几个查询,包括:

INSERT INTO user_profile (user_id, email, user_name, first_foo) VALUES (NULL, %s, %s, 0);
INSERT INTO user_profile (user_id, email, user_name, first_foo) VALUES (DEFAULT, %s, %s, 0);
INSERT INTO user_profile (user_id, email, user_name, first_foo) VALUES (0, %s, %s, 0);

但都返回相同的错误。

如果我在 Python Anywhere 上的 MySQL 控制台中运行第一个查询,则查询成功。

预先感谢您的帮助。

python mysql pythonanywhere
1个回答
0
投票

不幸的是我的英语不是很好但是。 如果您正确声明该列可自动递增?

这可以通过指定增量从哪个值开始来解决:

ALTER TABLE YourTableName MODIFY user_id INT NOT NULL AUTO_INCREMENT;
© www.soinside.com 2019 - 2024. All rights reserved.