【发布时间】:2014-01-14 00:43:52
【问题描述】:
我的 SQLite 数据库出现了一些问题。我有一些这样的 sql 脚本:
CREATE TABLE Workers(
Id_worker INT NOT NULL PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Surname VARCHAR(30) NOT NULL,
Id_job INT NOT NULL, -- REFERENCES Job(Id_job),
Adress VARCHAR(30) NOT NULL,
Start_date SMALLDATETIME NOT NULL
);
CREATE TABLE OldWorkers(
Id_arch INT NOT NULL PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Surname VARCHAR(30) NOT NULL,
Id_job INT NOT NULL, -- REFERENCES Job(Id_job),
Adress VARCHAR(30) NOT NULL,
Start_date SMALLDATETIME NOT NULL,
Delete_date SMALLDATETIME NOT NULL
);
CREATE TRIGGER OldWorkersTrigger
AFTER DELETE ON Workers
FOR EACH ROW
BEGIN
INSERT INTO OldWorkers (Id_arch, Name, Surname, Id_job, Adress, Start_date) VALUES (old.Id_arch, old.Name, old.Surname, old.Id_job, old.Adress, old.Start_date,datatime('now'));
END;
我尝试通过 sqlite3 在 Python 2.7.4 中这样做:
conn = sqlite3.connect('Company.db')
c = conn.cursor()
fd = open('MyScript.sql', 'r')
sqlFile = fd.read()
fd.close()
# all SQL commands (split on ';')
sqlCommands = sqlFile.split(';')
i = 1
# Execute every command from the input file
for command in sqlCommands:
# This will skip and report errors
# For example, if the tables do not yet exist, this will skip over
# the DROP TABLE commands
print i," : ",command
i = i + 1
try:
c.execute(command)
except OperationalError, msg:
print "Command skipped: ", msg
但是在带有我的触发器的命令中,它返回:跳过命令:靠近“)”:语法错误。 在END之后;它返回:命令已跳过:无法提交 - 没有事务处于活动状态
【问题讨论】: