sqlite3 执行带参数的sql语句
c = conn.cursor() # 获取游标
sql1 = '''insert into company (id , name , age , address , salary) values (? , ? ,? , ? , ?)'''
arg = (None, '王五', 32, '天堂', 5555)
c.execute(sql1, arg) # 执行sql
conn.commit() # 提交数据库
conn.close() # 关闭数据库
在执行的时候,使用arg参数化带入数据,执行即可
sql语句中用“?”占位,执行的时候用arg中的参数代替。
其中主键id为自增id,所以用None
class SqlLiteDB:
def __init__(self):
self.conn = sqlite3.connect("sqlite3.db")
def creat_table(self):
# 初始化数据库,创建表
conn = self.conn # 打开或创建数据库文件
c = conn.cursor() # 获取游标
creat_sql = """CREATE TABLE "company1" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"name" text NOT NULL,
"age" int NOT NULL,
"address" char(50),
"salary" real
);"""
c.execute(creat_sql) # 执行sql御酒
conn.commit() # 提交数据库
conn.close() # 关闭数据库
print("建表成功")
def insert_data(self, sql):
# 插入数据
conn = self.conn # 打开或创建数据库文件
c = conn.cursor() # 获取游标
sql1 = '''insert into company (id , name , age , address , salary) values (55 , '王五' , 32 , '天堂' , 5555)'''
sql2 = '''insert into company values (? , ? ,? , ? , ?)'''
arg = (None, '王五', 32, '天堂', 5555)
c.execute(sql1, arg) # 执行sql
conn.commit() # 提交数据库
conn.close() # 关闭数据库
def select_data(self, sql):
# 查询数据
conn = self.conn
c = conn.cursor() # 获取游标
cursor = c.execute(sql) # 执行sql御酒
for row in cursor:
print(row)
conn.close() # 关闭数据库
星辰大海