Python连接SQLite3
作者:互联网
目录
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