我有一个具有webApp用户的数据库。用户只有选择、删除和创建的权限。
我用fastAPI编写了一个小API,它接收文件并使用它做一些小的清理工作。之后,文件将传递给mysql服务器。
(编辑以更好地理解) SQL-File如下所示:
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY,
name varchar(255) NOT NULL,
email varchar(255) NOT NULL UNIQUE,
password varchar(255) NOT NULL
);
INSERT into users (id, name, email, password) VALUES (1, 'test', 'test@gmail.com', 'password');
CREATE TABLE IF NOT EXISTS books (
id INT PRIMARY KEY,
name varchar(255) NOT NULL,
price int not null,
authorName varchar(255) NOT NULL
);
create table if not exists orders (
id INT PRIMARY KEY,
userId INT NOT NULL,
bookId INT NOT NULL,
quantity INT NOT NULL
);
create table if not exists adventureBookings(
id INT PRIMARY KEY,
country varchar(255) NOT NULL,
city varchar(255) NOT NULL,
price int not null
);
它被读取,然后保存为字符串。然后,具有有限权限的用户webApp将一次性执行这些SQL-查询,但是由于不允许他执行插入操作,数据库将抛出一个错误,并停止执行SQL-Skript。
因此,用户的create将被执行,然后插入是不允许的,并且没有创建图书、订单和adventureBookings表。
问题是: mysql服务器是否有一个设置可以忽略被拒绝的错误,或者我可以做什么来确保所有表都会被执行,或者我应该尝试其他什么?
发布于 2022-07-12 06:37:42
要么在执行之前解析SQL语句,要么忽略异常:
import mariadb
....
for line in lines:
try:
cursor.execute(line)
except Exception as err:
if err.errno == ERR.ER_ACCESS_DENIED:
pass
https://stackoverflow.com/questions/72953435
复制相似问题