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()  # 关闭数据库
posted @ 2022-12-27 16:39  秋欲白  阅读(507)  评论(0编辑  收藏  举报