SQLite著名的一款轻型数据库系统,尤其适合python初学者学习数据库编程。因为:
1、它内置,无需安装,省了很多麻烦。
2、使用方便,无需复杂的连接配置,和打开本地文件一样简单。
3、转移方便,数据库就是一个文件,复制、转移、删除都能简单处理

4、轻量级应用中性能优于多数其它的数据库
5、完整的SQL语言支持,和其它sql数据库大同小异,学会这个之后,很容易举一反三。
快速了解下最基本的增、删、查、改这几个操作步骤,就可以做一些有趣的小项目了
举个例子
一、准备工作
主要是加载模块,用connect打开数据库文件,用cursor获取游标对象。打开数据库时直接给出数据库的文件名即可,如果文件不存在,会自动创建。
二、建新表
建立新表,就是将建表的SQL命令交由execute执行即可。如果不想写代码,也可以在pycharm的数据库管理工具里面直接可视化操作。不过个人认为,建新表写成代码更实用些,删表等不常用的操作则用pycharm的数据库管理工具比较方便。
创建数据表的语法:CREATE TABLE 数据表名(
字段1 数据类型, 字段2 数据类型, 字段3 数据类型, ….. 字段N 数据类型,
数据类型主要可选
INTEGER整数 , REAL浮数 , TEXT字符串。类型 后面可以加一下修饰,例如:PRIMARY key ,NOT NULL,特别常用的 自增类型应该写为 INTEGER PRIMARY KEY AUTOINCREMENT
布尔值可以用0或者1存放在整数类型中
三、基本的增、改、查、删等操作
注意的是尽量使用?占位符做参数化查询。
综合而言,对于一些简单的需求,您只需要大致了解图中connect(…)、cursor(…)、execute(…)、fetchall()4个函数,辅以若干SQL命令的常识,您就可以用python方便的使用SQLite数据库了。
在python3下怎样用flask-sqlalchemy对mysql数据库操作
这个问题经常难道新手一下,因为大部分教程里(包括经典的《Flask Web开发》一书),告诉了我们如何使用flask-sqlalchemy操作sqlite,但在生产环境(线上网站)上,我们肯定是使用MySQL或其他,而大部分的教程里,又告诉我们flask-sqlalchemy使用MySQL的方式是:mysql://username:password@server/db结果我们照葫芦画瓢的来一下,发现压根不行,写好的网站一跟数据库沾边就报错。 Python和MySQL是「两个国家的人」,他们互不相通,因而需要一个中间代理,让双方互通有无,跟翻译一样(这比喻不准确,但足够你明白意思就行)。 翻译又有很多选择,不同的翻译各有特色。 题主解决问题选择的翻译是「flask-mysqldb」,其背后的主子是「MySQL-python」。 恩,说到这里你应该知道,「flask-xxx」这样的包都是对背后主子进行了适合Flask封装的插件,跟包子皮一样,里面的馅才是重点,「flask-mysqldb」的馅是「MySQL-python」。 而我要推荐的是另一个翻译:PyMySQL,这玩意的好处是可以做异步(「MySQL-python」也可以,个人口味罢了),简而言之,网站访问量大了就需要考虑异步,现在别管这是啥子。 这玩意的安装方式是:pip install PyMySQL之后,数据库连接由:mysql://username:password@server/db改为mysql+pymysql://username:password@server/db就可以了。
安卓怎么使用sqlite数据库实例
SQPte 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。 此外它还是开源的,任何人都可以使用它。 许多开源项目((Mozilla, PHP, Python)都使用了 由以下几个组件组成:SQL 编译器、内核、后端以及附件。 SQPte 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQPte 的内核变得更加方便。 图 1. SQPte 内部结构SQPte 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。 它的优点就是高效,Android 运行时环境包含了完整的 SQPte。 SQPte 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。 当某个值插入数据库时,SQPte 将检查它的类型。 如果该类型与关联的列不匹配,则SQPte 会尝试将该值转换成该列的类型。 如果不能转换,则该值将作为其本身具有的类型存储。 比如可以把一个字符串(String)放入INTEGER 列。 SQPte 称这为“弱类型”(manifest typing.)。 此外,SQPte 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套transcaction 和 RIGHT OUTER JOIN 和 FPL OUTER JOIN, 还有一些 ALTER TABLE 功能。 除了上述功能外,SQPte 是一个完整的 SQL 系统,拥有完整的触发器,交易等等。 Android 集成了 SQPte 数据库Android 在运行时(run-time)集成了 SQPte,所以每个 Android 应用程序都可以使用 SQPte数据库。 对于熟悉 SQL 的开发人员来时,在 Android 开发中使用 SQPte 相当简单。 但是,由于 JDBC 会消耗太多的系统资源,所以JDBC 对于手机这种内存受限设备来说并不合适。 因此,Android 提供了一些新的 API 来使用 SQPte 数据库,Android开发中,程序员需要学使用这些 API。 数据库存储在 AND, nPl);在上面例子中,我们查询 SQPte 系统表(sqPte_master)检查 table 表是否存在。 返回值是一个 cursor对象,这个对象的方法可以迭代查询结果。 如果查询是动态的,使用这个方法就会非常复杂。 例如,当你需要查询的列在程序编译的时候不能确定,这时候使用query() 方法会方便很多。 RegPar Queriesquery() 方法用 SELECT 语句段构建查询。 SELECT 语句内容作为 query()方法的参数,比如:要查询的表名,要获取的字段名,WHERE 条件,包含可选的位置参数,去替代 WHERE 条件中位置参数的值,GROUP BY条件,HAVING 条件。 除了表名,其他参数可以是 nPl。 所以,以前的代码段可以可写成:String[] cPumns={ID, inventory};String[] parms={snicklefritz};Cursor resPt=(widgets, cPumns, name=?,parms, nPl, nPl, nPl);使用游标不管你如何执行查询,都会返回一个 Cursor,这是 Android 的 SQPte数据库游标,使用游标,你可以:通过使用 getCount() 方法得到结果集中有多少记录;通过 moveToFirst(),moveToNext(), 和 isAfterLast() 方法遍历所有记录;通过 getCPumnNames() 得到字段名;通过getCPumnIndex() 转换成字段号;通过 getString(),getInt() 等方法得到给定字段当前记录的值;通过requery() 方法重新执行查询得到游标;通过 close() 方法释放游标资源;例如,下面代码遍历 mytable 表Cursor resPt=(SELECT ID, name, inventory FROM mytable);();while (!()) {int id=(0);String name=(1);int inventory=(2);// do something usefP with ();}();在 Android 中使用 SQPte 数据库管理工具在其他数据库上作开发,一般都使用工具来检查和处理数据库的内容,而不是仅仅使用数据库的 API。 使用 Android模拟器,有两种可供选择的方法来管理数据库。 首先,模拟器绑定了 sqPte3 控制台程序,可以使用 adb shell命令来调用他。 只要你进入了模拟器的 shell,在数据库的路径执行 sqPte3 命令就可以了。 数据库文件一般存放在:/data/data//Databases/your-db-name如果你喜欢使用更友好e68a84e799bee5baa6e79fa5e的工具,你 可以把数据库拷贝到你的开发机上,使用 SQPte-aware客户端来操作它。 这样的话,你在一个数据库的拷贝上操作,如果你想要你的修改能反映到设备上,你需要把数据库备份回去。 把数据库从设备上考出来,你可以使 用 adb pPl 命令(或者在 IDE 上做相应操作)。 存储一个修改过的数据库到设备上,使用 adb push 命令。 一个最方便的 SQPte客户端是 FireFox SQPte Manager 扩展,它可以跨所有平台使用。 图 2. SQPte Manager结束语如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用 SQPte数据库是一种非常好的选择。 本文介绍了如何在 Android 应用程序中使用 SQPte 数据库 ,主要介绍了在 Android 应用程序中使用SQPte 创建数据库和表、添加数据、更新和检索数据,还介绍了比较常用的 SQPte 管理工具,通过阅读本文,你可以在 Android中轻松操作 SQPte 数据库。
如何使用python连接数据库,插入并查询数据
你可以访问Python数据库接口及API查看详细的支持数据库列表。 不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。 DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。 Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。 Python DB-API使用流程:引入 API 模块。 获取与数据库的连接。 执行SQL语句和存储过程。 关闭数据库连接。 什么是MySQLdb?MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 如何安装MySQLdb?为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。 复制以下代码,并执行:#!/usr/bin/python# -*- coding: UTF-8 -*-import MySQLdb如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:Traceback (most recent call last):File , line 3, in import MySQLdb ImportError: No module named MySQLdb 安装MySQLdb,请访问 ,(Linux平台可以访问:)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。 如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。 如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令: $ gunzip $ tar -xvf $ cd MySQL-python-1.2.2 $ python build $ python install 注意:请确保您有root权限来安装上述模块。 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。 连接数据库TESTDB使用的用户名为 testuser ,密码为 test123,你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。 在你的机子上已经安装了 Python MySQLdb 模块。 如果您对sql语句不熟悉,可以访问我们的 SQL基础教程 实例: 以下实例链接Mysql的TESTDB数据库: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # 使用execute方法执行SQL语句 (SELECT VERSION()) # 使用 fetchone() 方法获取一条数据库。 data = () print Database version : %s % data # 关闭数据库连接 () 执行以上脚本输出结果如下: Database version : 5.0.45 创建数据库表 如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # 如果数据表已经存在使用 execute() 方法删除表。 (DROP TABLE IF EXISTS EMPLOYEE) # 创建数据表SQL语句 sql = CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT ) (sql) # 关闭数据库连接 () 数据库插入操作 以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 插入语句 sql = INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (Mac, Mohan, 20, M, 2000) try: # 执行sql语句 (sql) # 提交到数据库执行 () except: # Rollback in case there is any error () # 关闭数据库连接 () 以上例子也可以写成如下形式: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 插入语句 sql = INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES (%s, %s, %d, %c, %d ) % \ (Mac, Mohan, 20, M, 2000) try: # 执行sql语句 (sql) # 提交到数据库执行 () except: # 发生错误时回滚 () # 关闭数据库连接 () 实例: 以下代码使用变量向SQL语句中传递参数: .................................. user_id = test123 password = password (insert into Login values(%s, %s) % \ (user_id, password)) .................................. 数据库查询操作 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。 fetchone(): 该方法获取下一个查询结果集。 结果集是一个对象 fetchall():接收全部的返回结果行. rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。 实例: 查询EMPLOYEE表中salary(工资)字段大于1000的所有数据: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 查询语句 sql = SELECT * FROM EMPLOYEE \ WHERE INCOME > %d % (1000) try: # 执行SQL语句 (sql) # 获取所有记录列表 results = () for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print fname=%s,lname=%s,age=%d,sex=%s,income=%d % \ (fname, lname, age, sex, income ) except: print Error: unable to fecth data # 关闭数据库连接 () 以上脚本执行结果如下: fname=Mac, lname=Mohan, age=20, sex=M, income=2000 数据库更新操作 更新操作用于更新数据表的的数据,以下实例将 TESTDB表中的 SEX 字段全部修改为 M,AGE 字段递增1: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 更新语句 sql = UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = %c % (M) try: # 执行SQL语句 (sql) # 提交到数据库执行 () except: # 发生错误时回滚 () # 关闭数据库连接 () 删除操作 删除操作用于删除数据表中的数据,以下实例演示了删除数据表 EMPLOYEE 中 AGE 大于 20 的所有数据: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 删除语句 sql = DELETE FROM EMPLOYEE WHERE AGE > %d % (20) try: # 执行SQL语句 (sql) # 提交修改 () except: # 发生错误时回滚 () # 关闭连接 () 执行事务 事务机制可以确保数据一致性。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。 这四个属性通常称为ACID特性。 原子性(atomicity)。 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。 事务必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性与原子性是密切相关的。 隔离性(isolation)。 一个事务的执行不能被其他事务干扰。 即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。 持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 接下来的其他操作或故障不应该对其有任何影响。 Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
发表评论