此问题已在此处有答案:
Modify a Column's Type in sqlite3(5个答案)
ALTER COLUMN in sqlite(5个答案)
4天前关闭。
我们小组的任务是创建和修改SQL表(我们选择在Python中完成),包括ALTER
命令,但是当我们试图将列Job_id
的数据类型从CHAR (10)
更改为VARCHAR (10)
时,我们总是得到这种语法。
代码如下:
import sqlite3
# Connect to the database
conn = sqlite3.connect('employee.db')
cursor = conn.cursor()
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# Create table
create_table_query = '''
CREATE TABLE EMPLOYEE (
Emp_no INTEGER PRIMARY KEY,
E_name TEXT,
E_address TEXT,
E_ph_no TEXT,
Dept_no INTEGER,
Dept_name TEXT,
Job_id CHAR(10),
Salary REAL
);
'''
cursor.execute(create_table_query)
# Display the table schema
cursor.execute("PRAGMA table_info(EMPLOYEE)")
table_schema = cursor.fetchall()
print("Table Schema:")
for column in table_schema:
print(column)
#2.) Alter table - Change the datatype of JOB_ID from char to varchar
cursor.execute('ALTER TABLE EMPLOYEE ALTER COLUMN Job_id VARCHAR (10);')
# Display the updated table schema
cursor.execute("PRAGMA table_info(EMPLOYEE)")
table_schema = cursor.fetchall()
print("\nUpdated Table Schema: Change the datatype of JOB_ID from char to varchar")
for column in table_schema:
print(column)
conn.close()
错误发生在第31行cursor.execute('ALTER TABLE EMPLOYEE ALTER COLUMN Job_id VARCHAR (10);')
我试过很多方法,但都不管用:
cursor.execute('ALTER TABLE EMPLOYEE MODIFY COLUMN Job_id VARCHAR (10);')
cursor.execute('ALTER TABLE EMPLOYEE ALTER COLUMN Job_id TYPE VARCHAR (10);')
cursor.execute('ALTER TABLE EMPLOYEE ALTER COLUMN JOB_ID VARCHAR (10);')
我们期待这样的输出:
Updated Table Schema: Change the datatype of JOB_ID from char to varchar
(0, 'Emp_no', 'INTEGER', 0, None, 1)
(1, 'E_name', 'TEXT', 0, None, 0)
(2, 'E_address', 'TEXT', 0, None, 0)
(3, 'E_ph_no', 'TEXT', 0, None, 0)
(4, 'Dept_no', 'INTEGER', 0, None, 0)
(5, 'Dept_name', 'TEXT', 0, None, 0)
(6, 'Job_id', 'VARCHAR(10)', 0, None, 0)
(7, 'Salary', 'REAL', 0, None, 0)
2条答案
按热度按时间0s0u357o1#
Sqlite的
ALTER TABLE
功能有限。您可以ADD
或REMOVE
一列,但不能改变它(source)。fivyi3re2#
将 type 关键字添加到语句中是否有帮助?
参见How to alter a column's data type in a PostgreSQL table?