ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Python连接SQLite3

2022-06-06 14:31:07  阅读:322  来源: 互联网

标签:Python 数据库 cursor test SQLite3 连接 conn


目录

Python连接SQLite3

一、 概论

在学完SQLite3的基本语法后,开始尝试对数据库进行连接,这里我们使用Python连接数据库

SQLite3语法友情链接:

在Python中不需要安装SQLite3模快

二、 使用方法

1、 连接

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: A.L.Kun
# @file : test.py
# @time : 2022/6/6 6:30
import sqlite3

conn = sqlite3.connect("flask1.db")  # 连接数据库
cursor = conn.cursor()  # 创建一个游标对象
print(cursor)

这时,我们可以使用装饰器对数据库进行连接

import sqlite3
from functools import wraps

def get_conn(path):
    def outer(fun):
        @wraps(fun)
        def inner(*args, **kwargs):
            conn = sqlite3.connect(path)  # 创建连接
            cursor = conn.cursor()  # 创建游标
            ret = fun(cursor, *args, **kwargs)
            conn.commit()  # 提交事务
            conn.rollback()  # 回滚事务,会将数据库返回到上一次提交事务的时候
            cursor.close()  
            conn.close()  
            return ret

        return inner
    return outer

2、 操作数据库

@get_conn("flask1.db")
def test(cursor):
    cursor.execute("SELECT id, name FROM users WHERE name=? AND pwd=?", ('liu', '123')) # 指定SQL语句,注意,不能使用字符串的拼接,这样不安全
    print(cursor.fetchall())  # 获取所有的数据
    print(cursor.fetchone())  # 获取第一条数据,如果拿过数据,那么数据就会变成空,游标里面的数据只能拿取一次,除非再次查找
    with open("test.sql", "r") as f:
        cursor.executescript(f.read())  # 运行sql脚本文件
    print(cursor.fetchall())

test()

test.sql里面的内容

BEGIN;
--主表
CREATE TABLE COMPANY(
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
    name TEXT NOT NULL ,
    age INT CHECK ( age >= 18 and age <= 50 ),  --年龄进行限制
    salary REAL DEFAULT 1000.0  --默认值为1000
);
--记录日志的表
CREATE TABLE log_company(
    id INTEGER NOT NULL ,  --记录改变的表的id
    time TEXT NOT NULL --记录表修改的时间
);
--创建触发器
CREATE TRIGGER log_company_t AFTER INSERT ON COMPANY  --在插入表数据的时候触发
BEGIN
   INSERT INTO log_company VALUES (new.id, DATETIME(CURRENT_TIMESTAMP,'localtime'));  --new表示插入的数据
END;
--向表中插入数据
INSERT INTO COMPANY (id, name, age) VALUES (1, 'LIHUA', 19);
--查看日志记录中的数据
SELECT * FROM log_company;
-- COMMIT;
COMMIT;

标签:Python,数据库,cursor,test,SQLite3,连接,conn
来源: https://www.cnblogs.com/liuzhongkun/p/16348100.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有