python - 插入操作中的 RBDMS sqlite3 错误..回滚
问题描述
我正在尝试在 RBDMS 表中插入多条记录,但收到错误
Error in insert operation..rollback
谁能帮我解决这个问题?下面是添加多条记录和创建表本身的代码
# Insert multiple records in table DAY_CARE
qry="insert into DAY_CARE (dayCareID, dayCareWebsite, dayCareAddress, dayCarePhone, dayCareBills, clientID, clientBookingID, staffHead) values (?,?,?,?,?,?,?,?);"
daycarelist=[('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 1, 1, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100 , 2, 2, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 3, 3, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 4, 4, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 5, 5, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 6, 6, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 7, 7, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 8, 8, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 9, 9, 'Bob Smith'),
('day care','www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 10, 10, 'Bob Smith')]
try:
cur.executemany(qry, daycarelist)
conn.commit()
print ('Records inserted successfully..committed')
except:
print ('Error in insert operation..rollback')
conn.rollback()
这是成功创建的 DAY_CARE 表。
# Day Care Table
qry='''
CREATE TABLE DAY_CARE (
dayCareID INTEGER PRIMARY KEY,
dayCareWebsite TEXT (40),
dayCareAddress TEXT (50),
dayCarePhone INTEGER (11),
dayCareBills INTEGER (6),
clientID INTEGER (50),
clientBookingID INTEGER (50),
staffHead TEXT (50)
);
'''
try:
cur.execute(qry)
print ('Table created successfully')
except:
# If table already exists then use the SQLite console to connect to the database and then use the drop table command.
# .. Altenatively, use the SQLiteStudio GUI to delete table ECC_DEPARTMENT and execute this code block again.
print ('Error in creating table')
解决方案
dayCareID
是一个integer primary key
,这意味着它是autoincrement
。
您不应将其包含在INSERT
语句的列列表中:
qry="insert into DAY_CARE (dayCareWebsite, dayCareAddress, dayCarePhone, dayCareBills, clientID, clientBookingID, staffHead) values (?,?,?,?,?,?,?);"
daycarelist=[('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 1, 1, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100 , 2, 2, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 3, 3, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 4, 4, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 5, 5, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 6, 6, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 7, 7, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 8, 8, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 9, 9, 'Bob Smith'),
('www.eddc.co.uk','Exeter Doggy Day Care, Stoker Rd, Exeter, EX4 4PY', 1392661000, 100, 10, 10, 'Bob Smith')]
另外,请注意,在表的语句中设置列的长度INTEGER(50)
并不TEXT(50)
意味着CREATE
这将是列的最大长度。
事实上 SQLite 忽略了它。
推荐阅读
- react-native - 如何修复元素类型无效预期反应原生中的字符串或类/函数错误?
- mysql - docker - mysql 版本 - 如何更新?
- firebase - AdMob 插页式广告仅显示一次反应原生
- c# - 如何更改 C# 项目中的 .Designer.cs?
- vespa - 在 Vespa 中创建动态文档类型
- woocommerce - 更改 billing_country 时的 wooCommerce 事件/挂钩
- jquery - 在每年 datetimepicker 中禁用特定月份
- vba - 执行由第三个组合框列过滤的查询
- apache-spark - 如何决定不。aws 中的核心和执行程序
- python - 不使用文本字段时的 Pynput