首页 > 数据库 >Python_sqlite3与sqlite数据库交互

Python_sqlite3与sqlite数据库交互

时间:2023-01-09 11:58:46浏览次数:50  
标签:sqlite name Python db execute ret sqlite3 table cur

基础功能

import sqlite3


# sqlite一个文件就是一个库
# 连接test.db数据库,没有就创建
conn = sqlite3.connect('test.db')

# 创建一个cursor
cur = conn.cursor()

# 创建表
table_name = "company"
cur.execute('''CREATE TABLE %s
       (ID integer PRIMARY KEY AUTOINCREMENT   NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''' % table_name)

# 查询库中的表
ret = cur.execute("select name from sqlite_master where type='table' order by name;").fetchall()
print("所有表名:", ret)

# 查询表结构
ret = cur.execute('PRAGMA table_info(%s)' % table_name).fetchall()
print("表结构", ret)

# 插入数据
cur.execute("INSERT INTO %s (NAME,AGE,ADDRESS,SALARY) VALUES \
            ('Paul', 32, 'California', 20000.00 ),\
            ('Allen', 25, 'Texas', 15000.00 ),\
            ('Teddy', 23, 'Norway', 20000.00 )" % table_name)

# 查询数据
ret = cur.execute("SELECT * from %s" % table_name).fetchall()
print("查询表格数据", ret)
# 更新数据
cur.execute("UPDATE %s set SALARY = 25000.00 where ID=1" % table_name)
ret = cur.execute("SELECT * from %s where ID=1" % table_name).fetchall()
print("查询更新数据", ret)

# 删除数据
cur.execute("DELETE FROM %s where ID=2" % table_name)
ret = cur.execute("SELECT * from %s" % table_name).fetchall()
print("查询删除后的数据", ret)

# 删除表格
cur.execute("DROP TABLE %s;" % table_name).fetchall()

# 提交数据
conn.commit()

# 关闭连接
cur.close()
conn.close()

简单封装

import sqlite3


class Sqlite(object):

    def __init__(self, db):
        # 连接数据库
        self.database = sqlite3.connect(db)
        print("连接数据库")

        # 获取游标对象
        self.cursor = self.database.cursor()

    def __del__(self):
        """对象销毁进行资源回收"""
        # 关闭游标
        self.cursor.close()
        # 关闭数据库连接
        self.database.close()
        print("__del__被执行")

    def execute(self, sql):
        """
        执行SQL
        :param sql: sql语句
        :return:返回游标对象
        """
        return self.cursor.execute(sql).fetchall()

    def commit(self):
        """提交数据,提交失败则回滚"""
        try:
            self.database.commit()
            return 0
        except Exception as e:
            self.database.rollback()
            return -1


if __name__ == '__main__':
    # sqlite一个文件就是一个库
    # 连接test.db数据库,没有就创建
    db = Sqlite("test.db")
    table_name = "company"

    # 创建表
    db.execute('''CREATE TABLE %s
           (ID integer PRIMARY KEY AUTOINCREMENT   NOT NULL,
           NAME           TEXT    NOT NULL,
           AGE            INT     NOT NULL,
           ADDRESS        CHAR(50),
           SALARY         REAL);''' % table_name)

    # 查询库中的表
    ret = db.execute("select name from sqlite_master where type='table' order by name;")
    print("所有表名:", ret)

    # 查询表结构
    ret = db.execute('PRAGMA table_info(%s)' % table_name)
    print("表结构", ret)

    # 插入数据
    db.execute("INSERT INTO %s (NAME,AGE,ADDRESS,SALARY) VALUES \
                ('Paul', 32, 'California', 20000.00 ),\
                ('Allen', 25, 'Texas', 15000.00 ),\
                ('Teddy', 23, 'Norway', 20000.00 )" % table_name)

    # 查询数据
    ret = db.execute("SELECT * from %s" % table_name)
    print("查询表格数据", ret)

    # 删除表格
    db.execute("DROP TABLE %s;" % table_name)

    # 提交数据
    db.commit()

 

标签:sqlite,name,Python,db,execute,ret,sqlite3,table,cur
From: https://www.cnblogs.com/testlearn/p/17036570.html

相关文章

  • Python-字符串
    用单引号,双引号,三引号创建字符串。不同数据类型是不能够合并的,必须转换为同一类型num=1string='1'num2=int(string)print(num+num2)   加号(+)用于字......
  • Python语言——实现登陆界面的跳转
    Python语言——实现登陆界面的跳转importtkinter'''实现登陆界面的跳转'''defenter():root=tkinter.Tk()root.title('信息界面')root['width']=......
  • python爬虫如何爬取招聘数据
    互联互通的时代,几乎任何行业有关的数据都可以在网络上查到,那么作为大数据公司,如何借用爬虫实现公开数据抓取数据就显得尤为重要,下面就是有关招聘信息等数据的抓取代码案例可......
  • Python爬虫
    参考网址https://blog.csdn.net/qq_35709559/article/details/84859927爬虫示例:将百度的图片下载到本地'''1.找到图片的url2.发送请求获取响应3.保存图片(流媒体......
  • 2023.1-09 python基础
    列表常用方法append增加一个元素a.append('aaaa')extend增加多个a.extend([1,2,3,4,5,6])index检索,个人理解类似于findprint(a.index("is"))inset指定位置插入......
  • Python笔记——列表一:列表简介(Python编程:从入门到实践)
    一、列表是什么列表:由一系列按特定顺序排列的元素组成(列表是有序集合)。表示:用方括号[]来表示,并用逗号来分隔其中的元素。访问:访问列表元素,可指出列表的名称,再指出......
  • python调试模块pdb:pdb基本用法(转)
    转载自:https://www.jianshu.com/p/fb5f791fcb18python调试:pdb基本用法(转)Edward_f0cusIP属地:台湾12016.01.0615:39:49字数767阅读73,778转自IBM开发......
  • python装饰器
    python装饰器--开放封闭原则知识点回顾#*args**kwargsdefwrapper(*args,**kwargs):#接受(形参)args=(1,2,3)kwargs={'a':1,'b':2}index(*args,**kwargs) #......
  • Python 中的生成器实现原理
    1.如何生成一个巨大的序列1.1需求描述要求生成一个包含很多元素的序列,假设:存储1个整数需要4个字节现在要创建一个包含1G个整数的序列,从0到1*1024*1024*......
  • 数据结构与算法Python版之北大慕课笔记(一)
    数据结构与算法Python版之北大慕课笔记(一)一、“变位词”判断问题1.解法一:逐字检查2.解法二:排序比较3.解法三:计数比较二、线性结构linearstructure1.四个......