python访问sqlite封装的常用类实例

合集下载

Python之Sqlite3数据库基本操作

Python之Sqlite3数据库基本操作

Python之Sqlite3数据库基本操作在⼀些⼩的应⽤中,难免会⽤到数据库,Sqlite数据库以其⼩巧轻便,⽆需安装,移植性好著称,本⽂主要以⼀个简单的⼩例⼦,简述Python在Sqlite数据库⽅⾯的应⽤,仅供学习分享使⽤,如有不⾜之处,还请指正。

涉及知识点1. sqlite3是Python集成的内置类库,提供Python操作sqlite3的相关接⼝。

2. sqlite3.connect(dbfile) 创建数据库连接,返回⼀个连接对象3. conn.cursor() 创建游标对象,通过返回的cursor对象,执⾏相应的SQL语句。

4. cur.execute(sql, *args) 执⾏语句5. mit() 提交执⾏的结果到数据库6. conn.rollback() 回退执⾏的结果7. cur.close() 关闭cursor对象8. conn.close() 关闭连接对象基础操作代码关于Python操作sqlite3的相关核⼼代码,如下所⽰:创建数据表1def createDb():2"""创建db数据表"""3 sql = '''4 create table person (5 id integer primary key autoincrement not null,6 name varchar not null,7 age integer8 )9'''10 executeSql(sql)View Code插⼊语句1def insertData(name, age):2"""插⼊数据"""3 sql = 'insert into person (name,age)values(?,?)'4 executeSql(sql, (name, age))View Codeupdate语句1def updateData(id, name, age):2"""通过ID进⾏修改语句"""3 sql = 'update person set name=?,age =? where id=?'4 executeSql(sql, (name, age, id))View Codedelete语句1def deleteData(id):2"""通过ID删除数据"""3 sql = 'delete from person where id=?'4 executeSql(sql, (id,))View Code上⾯的语句都调⽤统⼀的executeSql⽅法,如下所⽰:1def executeSql(sql, *args):2"""执⾏更新语句"""3 conn = sqlite3.connect(dbfile)4 cur = conn.cursor()5try:6 cur.execute(sql, *args)7 mit()8print('执⾏成功,影响⾏数:', cur.rowcount)9except Exception as e:10 conn.rollback()11print(e)12print('执⾏失败')13finally:14 cur.close()15 conn.close()View Code查询语句(⽆条件查询)1def queryData():2"""查询语句"""3 sql = 'select id,name,age from person '4 executeQuerySql(sql)View Code查询语句(条件查询)1def queryDataById(id):2"""通过id进⾏查询"""3 sql = 'select id,name,age from person where id = ? '4 executeQuerySql(sql, (id,))View Code上⾯的查询语句,都调⽤统⼀的executeQuerySql⽅法,如下所⽰:1def executeQuerySql(sql, *args):2"""执⾏查询语句,可带参数"""3 conn = sqlite3.connect(dbfile)4 cur = conn.cursor()5try:6 cur.execute(sql, *args)7 persons = cur.fetchall()8for p in persons:9print('当前⾏信息如下:')10print(p) # 返回的是⼀个元组tuple11print('查询成功')12except Exception as e:13print(e)14print('查询失败')15finally:16 cur.close()17 conn.close()View Code关于本例⼦的执⾏源码,可通过链接进⾏下载,如下所⽰:Python参数传递⽅式Python的参数传递⼀共有以下五种(位置参数、默认参数、变长参数、关键字参数、命名关键字参数)位置传递,即参数按照定义的位置及顺序进⾏传递,如下所⽰:1# 位置传递实例:2def fun1(a, b, c):3return a + b + c456print(fun1(1, 2, 3))View Code关键字传递,即通过传递的参数的名称进⾏识别。

Python数据库操作中的SQLite技巧

Python数据库操作中的SQLite技巧

Python数据库操作中的SQLite技巧SQLite是一种轻型的数据库管理系统,它是基于C语言实现的,并占用了很少的计算机资源。

在Python中,SQLite可以通过Python 自带的sqlite3模块来操作,这使得Python成为使用SQLite的绝佳工具。

在本篇论文中,我们将探讨一些Python操作SQLite的技巧。

一、连接SQLite及基本数据类型SQLite通过sqlite3模块在Python中的使用需要先生成数据库连接。

通常的写法为:```import sqlite3conn = sqlite3.connect('test.db')```在这个例子中,我们连接了一个名为“test.db”的SQLite数据库。

如果这个数据库不存在,那么Python会自动创建它,否则Python 就会打开它,并连通到这个数据库之中。

生成连接之后,我们便可以通过SQLite支持的数据类型进行操作。

SQLite支持的数据类型包括:1. NULL:SQLite中的NULL表示空值。

2. INTEGER: SQLite中的整型数据类型,其中,integer可以使用4 、 6 、 8.3. REAL: SQLite中的实数数据类型。

4. TEXT: SQLite中的字符串数据类型。

5. BLOB: SQLite中的二进制数据类型。

在操作SQLite时,我们需要注意的是,SQLite是基于文件的,因此操作之前,需要确保数据表存在,否则Python会抛出一个错误。

二、创建、插入、查询数据表1.创建数据表Python允许我们通过SQL语句在SQLite中创建数据表,例子如下:```pythonimport sqlite3conn = sqlite3.connect('test.db')print("Opened database successfully")conn.execute('''CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);''')print("Table created successfully")conn.close()```在这个例子中,我们创建了一个名为COMPANY的数据表,其中包含ID、NAME、AGE、ADDRESS、SALARY五个列,ID为主键,且是一个自动增长的列。

Python操作SQLite数据库的方法详解

Python操作SQLite数据库的方法详解

Python操作SQLite数据库的⽅法详解本⽂实例讲述了Python操作SQLite数据库的⽅法。

分享给⼤家供⼤家参考,具体如下:SQLite简单介绍SQLite数据库是⼀款⾮常⼩巧的嵌⼊式开源数据库软件,也就是说没有独⽴的维护进程,所有的维护都来⾃于程序本⾝。

它是遵守ACID的关联式数据库管理系统,它的设计⽬标是嵌⼊式的,⽽且⽬前已经在很多嵌⼊式产品中使⽤了它,它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了。

它能够⽀持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语⾔相结合,⽐如 Tcl、C#、PHP、Java等,还有ODBC接⼝,同样⽐起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度⽐他们都快。

SQLite第⼀个Alpha版本诞⽣于2000年5⽉. ⾄今已经有10个年头,SQLite也迎来了⼀个版本 SQLite 3已经发布。

安装与使⽤1.导⼊Python SQLITE数据库模块Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导⼊即可~import sqlite32. 创建/打开数据库在调⽤connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建⼀个再打开。

cx = sqlite3.connect("E:/test.db")也可以创建数据库在内存中。

con = sqlite3.connect(":memory:")3.数据库连接对象打开数据库时返回的对象cx就是⼀个数据库连接对象,它可以有以下操作:① commit()--事务提交② rollback()--事务回滚③ close()--关闭⼀个数据库连接④ cursor()--创建⼀个游标关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使⽤该命令,你也可以设置isolation_level=None,这样就变为⾃动提交模式。

python操作sqlite的小例子

python操作sqlite的小例子

python操作sqlite的⼩例⼦照着菜鸟教程学习python操作sqliteubuntu 安装sudo apte-get install sqlite3找到了sqlite3/bionic-updates,bionic-security,now 3.22.0-1ubuntu0.4 amd64 [installed]Command line interface for SQLite 3然后安装 sqlitebrowsersudo apt search sqlitebrowser找到这个sqlitebrowser/bionic,now 3.10.1-1.1 amd64 [installed]GUI editor for SQLite databases之后就是python 脚本了获取结果集按字典索引获取我找了找资料才处理好 row['NAME'] 不然就得⽤索引数组了定义 dict_factory 来替换 conn.row_factory#!/usr/bin/pythonimport sqlite3def dict_factory(cursor, row):d = {}for idx, col in enumerate(cursor.description):d[col[0]] = row[idx]return dconn = sqlite3.connect('test.db')conn.row_factory = dict_factoryprint"Opened database successfully"c = conn.cursor()c.execute('''CREATE TABLE if not exists COMPANY(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);''')print"Table created successfully"c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (NULL, 'Paul', 32, 'California', 20000.00 )")c.execute("UPDATE COMPANY SET NAME='Mark_update' WHERE ID = 4")cursor = conn.execute("DELETE from COMPANY WHERE ID = 4")mit()print"Records created successfully"cursor = c.execute("SELECT name,age,address from COMPANY")for row in cursor.fetchall():print row['NAME']conn.close()。

PythonSQLite3数据库操作类分享

PythonSQLite3数据库操作类分享

PythonSQLite3数据库操作类分享接触Python时间也不是很长的,最近有个项⽬需要分析数据,于是选⽤Python为编程语⾔,除了语⾔特性外主要还是看重Python对于SQLite3数据库良好的⽀持能⼒了,因为需要灵活处理⼤量的中间数据。

刚开始⼀些模块我还乐此不疲的写SQL语句,后来渐渐厌倦了,回想到以前捣⿎C#的时候利⽤反射初步构建了个SQL查询构造器,直到发现linq,于是放弃了这个计划,当然微软后来⼜推出了Entity Framework,这些都是后话了,⽽且现在我对微软的东西兴趣不是很⼤的,好了,扯多了,下⾯继续正⽂。

对了,再扯⼀句,优秀的博客程序Drupal也使⽤了类似的查询构造器进⾏数据库查询,避免直接写SQL语句,另外这样做的⼀点点好处就是,可以⼀定程度的屏蔽平台相关性,对于数据库迁移还是有帮助的。

不过我今天介绍的数据库辅助类查询构造器是个很简单的东东,甚⾄只限于SQLite数据库,如果有童鞋感兴趣可以完善下,我⽬前只要操作SQLite顺⼿就可以了,对于⽐较⼤的数据库应⽤就直接上ORM吧。

先看代码:复制代码代码如下:import sqlite3# ***************************************************# *# * Description: Python操作SQLite3数据库辅助类(查询构造器)# * Author: wangye# *# ***************************************************def _wrap_value(value):return repr(value)def _wrap_values(values):return list(map(_wrap_value, values))def _wrap_fields(fields):for key,value in fields.items():fields[key] = _wrap_value(value)return fieldsdef _concat_keys(keys):return "[" + "],[".join(keys) + "]"def _concat_values(values):return ",".join(values)def _concat_fields(fields, operator = (None, ",")):if operator:unit_operator, group_operator = operator# fields = _wrap_fields(fields)compiled = []for key,value in fields.items():compiled.append("[" + key + "]")if unit_operator:compiled.append(unit_operator)compiled.append(value)compiled.append(group_operator)compiled.pop() # pop last group_operatorreturn " ".join(compiled)class DataCondition(object):"""本类⽤于操作SQL构造器辅助类的条件语句部分例如:DataCondition(("=", "AND"), id = 26)DataCondition(("=", "AND"), True, id = 26)"""def __init__(self, operator = ("=", "AND"), ingroup = True, **kwargs):"""构造⽅法参数:operator 操作符,分为(表达式操作符, 条件运算符)ingroup 是否分组,如果分组,将以括号包含kwargs 键值元组,包含数据库表的列名以及值注意这⾥的等于号不等于实际⽣成SQL语句符号实际符号是由operator[0]控制的例如:DataCondition(("=", "AND"), id = 26)(id=26)DataCondition((">", "OR"), id = 26, age = 35)(id>26 OR age>35)DataCondition(("LIKE", "OR"), False, name = "John", company = "Google") name LIKE 'John' OR company LIKE "Google""""self.ingroup = ingroupself.fields = kwargsself.operator = operatordef __unicode__(self):self.fields = _wrap_fields(self.fields)result = _concat_fields(self.fields, self.operator)if self.ingroup:return "(" + result + ")"return resultdef __str__(self):return self.__unicode__()def toString(self):return self.__unicode__()class DataHelper(object):"""SQLite3 数据查询辅助类"""def __init__(self, filename):"""构造⽅法参数: filename 为SQLite3 数据库⽂件名"""self.file_name = filenamedef open(self):"""打开数据库并设置游标"""self.connection = sqlite3.connect(self.file_name)self.cursor = self.connection.cursor()return selfdef close(self):"""关闭数据库,注意若不显式调⽤此⽅法,在类被回收时也会尝试调⽤"""if hasattr(self, "connection") and self.connection:self.connection.close()def __del__(self):"""析构⽅法,做⼀些清理⼯作"""self.close()def commit(self):"""提交事务SELECT语句不需要此操作,默认的execute⽅法的commit_at_once设为True会隐式调⽤此⽅法,否则就需要显⽰调⽤本⽅法。

11.2.10 在Python 中访问SQLite 数据库[共3页]

11.2.10 在Python 中访问SQLite 数据库[共3页]

Python 基础教程242DELETE FROM 表名WHERE 删除条件表达式当执行DELETE 语句时,指定表中所有满足WHERE 子句条件的行都将被删除。

【例11-6】 删除表Employees 中列Emp_name 等于“李明”的数据,可以使用以下SQL 语句:DELETE FROM Employees WHERE Emp_name = '李明'; 11.2.9 查询数据可以使用SELECT 语句查询表中的数据,基本使用方法如下:SELECT * FROM 表名WHERE 删除条件表达式*表示查询表中所有的字段,当执行SELECT 语句时,指定表中所有满足WHERE 子句条件的行都将被返回。

【例11-7】 查询表Employees 中列Title 等于“部门经理”的数据,可以使用以下SQL 语句:SELECT * FROM Employees WHERE Title= '部门经理';执行结果如下: |赵六|男|部门经理|0.0|4101234567890|2||钱九|男|部门经理|0.0|7101234567890|3|SELECT 语句还有很多复杂的用法,本小节只介绍最基本的使用方法。

SELECT 语句和INSERT 语句、UPDATE 语句、DELETE 语句等都是标准的SQL 语句。

本书将在11.3节中介绍MySQL 数据库时介绍SELECT 语句的详细用法。

11.2.10 在Python 中访问SQLite 数据库Python 中内置了sqlite3模块,可以很方便地访问SQLite 数据库。

首先需要使用下面的语句导入sqlite3模块:import sqlite31.创建和打开数据库使用connect()方法可以创建和打开数据库,具体方法如下:数据库连接对象 = sqlite3.connect(数据库名)数据库名是包含绝对路径的数据库文件名。

pyqt+sqlite使用实例

pyqt+sqlite使用实例

pyqt+sqlite使用实例以下是一个使用 PyQt 和 SQLite 的基本实例。

在这个例子中,我们将创建一个简单的数据库,并创建一个用户界面让用户可以输入和查看数据。

首先,我们需要导入必要的模块并创建数据库连接。

pythonimport sqlite3from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QLabel, QGridLayout, QTableWidget, QTableWidgetItemfrom PyQt5.QtCore import Qtclass DBController():def __init__(self):self.conn = sqlite3.connect('my_database.db')self.cursor = self.conn.cursor()self.cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEYAUTOINCREMENT,name TEXT NOT NULL,email TEXT NOT NULL UNIQUE);''')接下来,我们创建一个简单的用户界面。

这里只展示了部分代码,更多细节可以自己完善。

pythonclass UserInterface(QWidget):def __init__(self, db_controller):super().__init__()self.db_controller = db_controllerself.initUI()def initUI(self):layout = QVBoxLayout()self.setLayout(layout)layout.addWidget(QPushButton('Add User', self))layout.addWidget(QPushButton('View Users', self))self.setLayout(layout)然后我们定义两个按钮的点击事件,分别用于添加用户和查看用户。

利用Python实现sqlite3增删改查的封装

利用Python实现sqlite3增删改查的封装

利⽤Python实现sqlite3增删改查的封装⽬录开发背景:特性:使⽤⽅法测试⽤例Python参数传递⽅式总结开发背景:每次项⽬都要写数据库、烦死了。

然后就每次数据库都要花很多时间。

烦死了!不如写个通⽤的增删查改,以不变应万变!特性:搭建通⽤增删查改模块,减少代码量。

让代码更加清晰、可读即便进⾏了封装,也丝毫不影响其灵活性sqlite3我也就不多介绍了,直接上代码。

附上相关使⽤⽅法和测试⽤例!使⽤⽅法import sqlite3'''写⼀个类打包成库,通⽤于储存信息的sqlite''''''函数返回值可优化''''''使⽤:使⽤''''''说明:1、单例模式连接数据库:避免数据库connect过多导致数据库down2、根据数据库增删查改性能对⽐,统⼀使⽤execute进⾏常规数据库操作3、且不做try操作:1、影响性能 2、若报错,外部调⽤⽆法确定问题所在,'''class LiteDb(object):_instance = Nonedef __new__(cls, *args, **kw):if cls._instance is None:cls._instance = object.__new__(cls)return cls._instancedef openDb(self, dbname):self.dbname = dbnameself.conn = sqlite3.connect(self.dbname)self.cursor = self.conn.cursor()def closeDb(self):'''关闭数据库:return:'''self.cursor.close()self.conn.close()def createTables(self, sql):'''example:'create table userinfo(name text, email text)':return: result=[1,None]'''self.cursor.execute(sql)mit()result = [1, None]return resultdef dropTables(self, sql):'''example:'drop table userinfo':param sql::return:result=[1,None]'''self.cursor.execute(sql)mit()result = [1, None]return resultdef executeSql(self, sql, value=None):'''执⾏单个sql语句,只需要传⼊sql语句和值便可:param sql:'insert into user(name,password,number,status) values(?,?,?,?)' 'delete from user where name=?''updata user set status=? where name=?''select * from user where id=%s':param value:[(123456,123456,123456,123456),(123,123,123,123)]value:'123456'value:(123,123):return:result=[1,None]''''''增、删、查、改'''if isinstance(value,list) and isinstance(value[0],(list,tuple)):for valu in value:self.cursor.execute(sql, valu)else:mit()result = [1, self.cursor.fetchall()]else:'''执⾏单条语句:字符串、整型、数组'''if value:self.cursor.execute(sql, value)else:self.cursor.execute(sql)mit()result = [1, self.cursor.fetchall()]return result测试⽤例from dbUse import LiteDb'''对于⼆次封装的数据库进⾏测试''''''增删查改'''#⽤例'''select name from sqlite_master where type='tableselect * from user'select * from user where id = %s'%7select * from user where id = ? , 7select * from user where id=? or id=?, ['7','8']insert into user(id) values(7)'insert into user(id) values(%s)'%7'insert into user(id) values(?)',[('10',),('11',)]delete from user where id=7'delete from user where id=%s'%7'delete from user where id=?',[('10',),('11',)]update user set id=7 where id=11'update user set id=%s where id=%s'%(10,20)'update user set id=? where id=?',[('21','11'),('20','10')]'''db=LiteDb()db.openDb('user.db')def close():db.closeDb()def createTables():result=db.createTables('create table if not exists user(id varchar(128))')def executeSQL():'''增删查改'''result = db.executeSql('insert into user(id) values(?)',('99',))result = db.executeSql('select * from user ')executeSQL()close()Python参数传递⽅式Python的参数传递⼀共有以下五种(位置参数、默认参数、变长参数、关键字参数、命名关键字参数)位置传递,即参数按照定义的位置及顺序进⾏传递,如下所⽰:# 位置传递实例:def fun1(a, b, c):return a + b + cprint(fun1(1, 2, 3))关键字传递,即通过传递的参数的名称进⾏识别。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python访问sqlite封装的常用类实例
在Python中,访问SQLite数据库通常使用封装好的类库,如sqlite3模块提供了对SQLite数据库的底层访问。

SQLite是一
种轻量级的关系型数据库,广泛应用于移动应用和嵌入式系统中。

下面将介绍SQLite数据库的常用类和实例。

1. 连接数据库:
使用sqlite3.connect()函数可以建立与SQLite数据库的连接。

这个函数接受一个参数,表示数据库文件的路径。

如果数据库文件不存在,会自动创建。

示例代码:
```
import sqlite3
conn = sqlite3.connect("test.db")
```
2. 创建表:
使用游标(cursor)对象可以执行SQL语句。

首先,要调用
游标的execute()方法,参数是一条创建表的SQL语句。

然后,调用commit()方法提交事务,确保表结构的改变生效。

示例代码:
```
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")
mit()
```
3. 插入数据:
使用INSERT语句可以将数据插入到表中。

首先,要调用游
标的execute()方法,参数是一条插入数据的SQL语句。

然后,调用commit()方法提交事务,确保数据的改变生效。

示例代码:
```
cursor.execute("INSERT INTO students (name, age) VALUES ('Alice', 20)")
mit()
```
4. 查询数据:
使用SELECT语句可以从表中查询数据。

首先,要调用游标
的execute()方法,参数是一条查询数据的SQL语句。

然后,
通过调用游标的fetchone()或fetchall()方法获取查询结果。

示例代码:
```
cursor.execute("SELECT * FROM students")
rows = cursor.fetchall()
for row in rows:
print(row)
```
5. 更新数据:
使用UPDATE语句可以更新表中的数据。

首先,要调用游
标的execute()方法,参数是一条更新数据的SQL语句。

然后,调用commit()方法提交事务,确保数据的改变生效。

示例代码:
```
cursor.execute("UPDATE students SET age = 21 WHERE name = 'Alice'")
mit()
```
6. 删除数据:
使用DELETE语句可以从表中删除数据。

首先,要调用游标的execute()方法,参数是一条删除数据的SQL语句。

然后,调用commit()方法提交事务,确保数据的改变生效。

示例代码:
```
cursor.execute("DELETE FROM students WHERE name =
'Alice'")
mit()
```
以上是对SQLite数据库常用类的简单介绍与示例代码。

通过使用这些类和方法,可以方便地连接数据库、创建表、插入、查询、更新和删除数据。

对于复杂的数据库操作,还可以使用更高级的功能和技巧,如使用参数化查询、使用事务进行批量处理等。

对于SQLite数据库的更多信息,可以查阅相关的文档和教程。

相关文档
最新文档