PYTHON中的SQLITE
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 Web 开发如何使用SQLite_Python 高级开发工程师_习题及答案解析

Python Web Development with SQLite习题及答案解析(答案见尾页)一、选择题1. SQLite是一个?A. Python内置模块B. 关系型数据库管理系统C. NoSQL数据库管理系统D. 面向对象数据库管理系统2. 在SQLite中,用于创建表的语句是?A. CREATE TABLEB. INSERT INTOC. UPDATED. DELETE3. 以下哪个SQL语句会在表中插入一行数据?A. SELECT * FROM table WHERE id = 1B. INSERT INTO table (name, age) VALUES ('John', 20)C. UPDATE table SET name = 'John' WHERE id = 1D. DELETE FROM table WHERE id = 14. 在SQLite中,如何实现两个表之间的关联查询?A. JOINB. UNIONC. WHERED. GROUP BY5. SQLite中的数据类型包括哪些?A. INTEGER, FLOAT, BOOLEANB. TEXT, DATE, TIMEC. STRING, ARRAYD. None of the above6. SQLite中,用于查询数据的语句是?A. SELECTB. WHEREC. ANDD. OR7. 以下哪个SQL语句会在表中更新一条数据?A. SELECT * FROM table WHERE id = 1B. UPDATE table SET name = 'John' WHERE id = 1C. WHERE name = 'John'D. DELETE FROM table WHERE id = 18. 在Flask中,用于定义路由的函数是?************('/')************(('/static')************('/user/<int:id>')************('<str:name>')9. 在Flask中,如何处理表单提交的数据?A. request.form['name']B. request.POST['name']C. request.get_json()['name']D. request.get()['name']10. Flask中的模板引擎是?A. Jinja2B. MakoC. DjangoD. FastAPI11. 什么情况下,需要使用Python内置的input()函数获取用户输入?A. 在路由处理中B. 在模板中C. 在视图函数中D. 在数据库操作中12. Flask框架的核心是哪个部分?A. 路由B. 模板C. 数据库连接D. 所有以上13. 在Flask中,如何定义一个路由?************('/')************('/<name>')************('/<name>/<id>')************('/<name>',methods=['POST'])14. Flask中的template引擎是什么?A. Jinja2B. MakoC. ChameleonD. Django15. Flask中的view函数是在哪个环境中执行的?A. 开发环境B. 生产环境C. 服务器端D. 客户端16. 在Flask中,如何实现用户认证?A. 使用sessionB. 使用cookieC. 使用Flask-LoginD. 使用Flask-Security17. Flask中的Blueprint是什么?A. 一个包含路由的模块B. 一个包含视图函数的模块C. 一个包含模板的模块D. 一个包含数据库操作的模块18. 在Flask中,如何注册蓝print?A. app.register_blueprint()B. app.add_url_rule()C. app.add_view()D. app.register_blueprint_with_prefix()19. Flask中的静态文件指的是什么类型的文件?A. HTML文件B. CSS文件C. JavaScript文件D. 所有以上20. 在Flask中,如何处理表单提交的数据?A. 使用request.formB. 使用request.jsonC. 使用 sessionD. 使用数据库操作21. 在SQLite中,如何创建一个包含多个记录的表?A. CREATE TABLE table_name (column1 data_type, column2 data_type, ...)B. INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)C. UPDATE table_name SET column1 = value1 WHERE column2 = value2D. DELETE FROM table_name WHERE column1 = value122. Flask中的路由装饰器用于什么?A. 接收HTTP请求B. 处理HTTP请求C. 返回HTTP响应D. 所有上述选项23. 在Flask中,如何定义一个获取请求的视图函数?************('/')B. def get_request():...************('/<path:name>')D. def get_request(name):...24. SQLite中有哪些常用的数据库约束?A. PRIMARY KEY, FOREIGN KEY, UNIQUEB. NOT NULL, ORDER BYC. SELECT, GROUP BYD. all of the above25. 在Flask中,如何实现表单提交?A. request.form['key'] = valueB. request.POST['key'] = valueC. request.data['key'] = valueD. request.json['key'] = value26. Flask-SQLAlchemy是一个什么库?A. 用于连接数据库B. 用于处理HTTP请求C. 用于定义数据库模型D. 用于实现表单提交27. 在Flask中,如何实现对请求数据的验证?A. request.form['key'] = value and value != ''B. request.POST['key'] = value and value != ''C. request.data['key'] = value and value != ''D. all of the above28. SQLite中,如何实现事务?A. BEGIN TRANSACTIONB. COMMITC. ROLLBACKD. all of the above29. Flask-Login用于什么?A. 处理HTTP请求B. 用于登录认证C. 用于定义数据库模型D. 用于连接数据库30. Flask-RESTful用于什么?A. 处理HTTP请求B. 用于RESTful API开发C. 用于连接数据库D. 用于实现表单提交31. 请问在Flask框架中,以下哪个函数用于定义视图函数?A. app.route()B. app.route_view()C. app.route_ decoratorD. app.route(url_prefix='/')32. 在Flask中,如何实现对用户身份的认证?A. sessionB. userC. login_user()D. login()33. Flask中的路由(Route)和装饰器(Decorator)有什么区别?A. 路由是用于处理HTTP请求的函数,而装饰器是用来自定义路由的函数B. 路由用于处理HTTP请求,而装饰器用于定义视图函数C. 路由是用来自定义URL的函数,而装饰器是用来自定义请求-响应循环的函数D. 路由用于处理表单提交,而装饰器用于处理GET请求34. 请问在SQLite中,如何创建一个新表?A. CREATE TABLEB. CREATE TABLE IF NOT EXISTSC. ALTER TABLED. DROP TABLE35. 在Flask中,如何设置静态文件存储路径?A. os.getcwd()B. config['UPLOAD_FOLDER']C. request.static_folderD. request.base_url36. 在Flask中,如何返回JSON格式的数据?A. jsonify()B. response.jsonC. json.dumps()D. request.json37. 请问在Flask中,以下哪个变量用于存储当前请求的URL?A. requestB. urlC. flaskD. g38. 在Flask中,如何注册一个视图函数到特定的路由?************('/')************('/<path:name>')************('/<int:age>')************('/<float:age>')39. 在SQLite中,如何执行一个查询?A. SELECTB. FROMC. WHERED. JOIN40. 请问在Flask中,以下哪个装饰器用于处理跨域请求?A. cross_originB. allow_originC. proxy_allow_originD. force_origin二、问答题1. 什么是SQLite?2. 如何创建一个新的SQLite数据库?3. 如何在SQLite中创建一个表?4. 如何在SQLite中向表中插入一条数据?5. 如何在SQLite中更新一条数据?6. 如何在SQLite中删除一条数据?7. 如何使用SQLite进行查询?8. 如何使用SQLite进行聚合查询?9. 如何使用SQLite进行连接查询?10. 如何在Flask Web应用中使用SQLite数据库?参考答案选择题:1. B2. A3. B4. A5. A6. A7. B8. A9. A 10. A11. A 12. D 13. A 14. A 15. B 16. C 17. A 18. A 19. D 20. A21. A 22. D 23. A 24. A 25. A 26. C 27. D 28. D 29. B 30. B31. A 32. C 33. A 34. A 35. B 36. A 37. A 38. B 39. A 40. B问答题:1. 什么是SQLite?SQLite是一种轻量级的关系型数据库管理系统,它设计用于嵌入式的应用程序,例如Web 应用程序、桌面应用程序和移动应用程序等。
python操作sqlite示例(支持多进程线程同时操作)

python操作sqlite⽰例(⽀持多进程线程同时操作)python操作sqlite的⽰例代码:import timeimport threadingimport sqlite3def nomal_producer(conn):'''@summary: producer defination'''counter = 0conn.isolation_level = Noneconn.row_factory = sqlite3.Rowwhile True:# insert to dbcur = conn.cursor()cur.execute("INSERT INTO datas(content, flag) VALUES (?, ?);", ("content %s"%counter, False))counter = counter + 1# mit()time.sleep(0.1)def nomal_consumer(conn):'''@summary: consumer defination'''conn.isolation_level = Noneconn.row_factory = sqlite3.Rowwhile True:# select datacur = conn.cursor()cur.execute("SELECT * FROM datas ORDER BY id LIMIT 10;")records = cur.fetchall()if len(records) > 0:print "begin to delete: "print records# delete recordsfor r in records:conn.execute("DELETE FROM datas WHERE id = ?;", (r["id"], ))time.sleep(0.5)if __name__ == "__main__":# init dbconn = sqlite3.connect('./db.sqlite', check_same_thread = False)# conn = sqlite3.connect('./db.sqlite')# init threadproducer = threading.Thread(target = nomal_producer, args = (conn,))consumer = threading.Thread(target = nomal_consumer, args = (conn,))# start threadsproducer.start()consumer.start()在多进程操作sqlite的⽰例代码中,采⽤producer和consumer的模式来处理,没有特殊之处,但需要注意的是:在建⽴sqlite3的connection 的时候,需要设置check_same_thread = False。
Python实现将sqlite数据库导出转成Excel(xls)表的方法

Python实现将sqlite数据库导出转成Excel(xls)表的⽅法本⽂实例讲述了Python实现将sqlite数据库导出转成Excel(xls)表的⽅法。
分享给⼤家供⼤家参考,具体如下:1. 假设已经安装带有sliqte 库的Python环境我的是Python2.52. 下载 python xls 写操作包(xlwt)并安装3. 下⾯就是代码(db2xls.py):import sqlite3 as sqlitefrom xlwt import *#MASTER_COLS = ['rowid', 'type','name','tbl_name', 'rootpage','sql']def sqlite_get_col_names(cur, table):query = 'select * from %s' % tablecur.execute(query)return [tuple[0] for tuple in cur.description]def sqlite_query(cur, table, col = '*', where = ''):if where != '':query = 'select %s from %s where %s' % (col, table, where)else:query = 'select %s from %s ' % (col, table)cur.execute(query)return cur.fetchall()def sqlite_to_workbook(cur, table, workbook):ws = workbook.add_sheet(table)print 'create table %s.' % tablefor colx, heading in enumerate(sqlite_get_col_names(cur, table)):ws.write(0,colx, heading)for rowy,row in enumerate(sqlite_query(cur, table)):for colx, text in enumerate(row):ws.write(rowy+ 1, colx, text)def main(dbpath):xlspath = dbpath[0:dbpath.rfind('.')] + '.xls'print "<%s> --> <%s>"% (dbpath, xlspath)db = sqlite.connect(dbpath)cur = db.cursor()w = Workbook()for tbl_name in [row[0] for row in sqlite_query(cur, 'sqlite_master', 'tbl_name', 'type = \'table\'')]:sqlite_to_workbook(cur,tbl_name, w)cur.close()db.close()if tbl_name !=[]: w.save(xlspath)if __name__ == "__main__":# arg == database pathmain(sys.argv[1])4. ⽤法:> python <path>/db2xls.py dbpath如果没错,会在数据库的⽬录下⽣成同名的xls⽂件更多关于Python相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Python程序设计有所帮助。
python操作数据库的主要步骤

python操作数据库的主要步骤Python 操作数据库的主要步骤1. 导入必要的模块使用 Python 操作数据库需要导入必要的模块。
最常用的模块是 `sqlite3`,它提供对 SQLite 数据库的接口。
对于更高级的数据库系统,可以使用 `MySQLdb`、`psycopg2` 或 `pymongo` 等特定于数据库的模块。
2. 连接到数据库使用 `sqlite3.connect()` 或特定数据库模块提供的类似函数建立与数据库的连接。
此函数通常需要数据库文件或服务器地址、用户名和密码等参数。
3. 创建游标对象游标对象允许与数据库交互并执行查询和更新。
使用`connection.cursor()` 创建一个游标对象。
4. 执行查询使用游标对象的 `execute()` 方法执行 SQL 查询。
查询可以是简单的选择语句或更复杂的语句,如更新、插入或删除。
5. 提取结果查询执行后,可以使用游标对象的 `fetchall()` 或`fetchone()` 方法提取结果。
这些方法返回一个包含查询结果的元组或列表。
6. 提交更改(对于更新操作)对于需要修改数据库的更新操作,例如插入或删除,需要使用`mit()` 方法显式提交更改。
7. 关闭连接完成所有操作后,必须关闭数据库连接以释放资源。
使用`connection.close()` 方法关闭连接。
示例:使用 SQLite3 查询数据库```pythonimport sqlite3# 连接到数据库connection = sqlite3.connect('mydb.db') # 创建游标对象cursor = connection.cursor()# 执行查询cursor.execute('SELECT FROM users')# 提取结果results = cursor.fetchall()# 处理结果for row in results:print(row)# 关闭连接cursor.close()connection.close()```其他注意事项对于更高级的数据库系统,安全连接至数据库可能需要额外的配置,如 SSL 认证或访问控制。
sqlite3 python 对象化编程

sqlite3 python 对象化编程SQLite3是一种轻量级的关系型数据库管理系统,是Python的标准库之一。
它允许我们使用Python代码来操作数据库,实现数据的存储、检索和更新等功能。
本文将主要介绍如何使用SQLite3在Python中进行对象化编程,逐步回答相关问题。
# 1. 什么是对象化编程?对象化编程(Object-Oriented Programming,简称OOP)是一种编程模式或范型,主要基于现实世界中的对象概念进行设计和实现。
在对象化编程中,将数据和操作数据的函数打包成一个对象,通过对象之间的交互来完成各种功能。
# 2. 为什么要进行对象化编程?对象化编程具有许多优点,包括代码的重用性、可维护性、可扩展性和模块化等。
通过将数据和操作数据的函数封装在对象中,可以使代码更加简洁、可读性更高,并且减少代码的冗余。
同时,通过面向对象的设计,还可以更加灵活地进行系统的构建和扩展。
# 3. 如何在Python中进行对象化编程?在Python中进行对象化编程的主要步骤包括定义类、创建对象并初始化、定义类的方法和属性等。
首先,我们需要定义一个类。
类是对象的模板,用于描述对象有哪些属性和方法。
可以使用`class`关键字来定义一个类,后跟类名,并用冒号表示结束。
pythonclass Student:pass然后,我们可以创建一个对象并对其进行初始化。
可以使用类名加括号的方式创建对象,并且可以在括号中传入初始化参数。
可以使用`__init__`方法来对对象进行初始化操作。
pythonclass Student:def __init__(self, name, age): = nameself.age = agestu = Student("Alice", 20)接下来,我们可以定义类的方法和属性。
方法是类中定义的函数,用于实现对象的操作功能。
属性是对象的特征,用于存储对象的数据。
学生信息管理系统python代码总结

学生信息管理系统python代码总结学生信息管理系统是一个基于Python编写的简单的数据库应用程序。
它使用户能够轻松地添加、更新、删除和搜索学生信息。
以下是关于学生信息管理系统 python 代码的总结:1. 采用SQLite数据库实现该系统的关键点之一是采用SQLite数据库。
SQLite是一个自给自足的、零配置的、事务性的SQL数据库引擎,因其易于使用、快速、小巧可靠而受到广泛关注。
使用SQLite存储数据,使得应用程序能够轻松存取、查询、更新和删除学生信息。
2. 用户验证为确保该学生信息管理系统具有安全性,用户必须进行验证才能访问系统。
用户需要输入正确的用户名和密码才能登录系统。
登录认证采用图形用户界面(GUI)与终端交互式控制台(CLI)方式,用户可根据自己的需要选择适合自己的方式进行登录。
3. 显示所有学生信息学生信息管理系统将所有学生的信息存储在一个数据库中。
要显示所有学生信息,系统会读取数据库中的所有学生信息并将其显示在列表框中。
用户可以使用滚动条来浏览以前存储的所有学生信息。
在系统的主窗口中,用户可以在图像界面中查看所有学生的信息。
4. 添加学生信息当用户想要添加一位新学生的信息时,他们可以在界面中选择“添加学生”选项。
在另一个弹出的窗口中,用户可以输入学生的姓名、年龄、性别和学号等详细信息。
用户可以随时添加任意数量的学生信息,只需要单击添加按钮即可保存学生信息。
如果用户输入有误或者学生信息发生了变化,系统允许用户随时更新学生信息。
用户可以通过单击“编辑”按钮来更改学生的信息。
在输入新的信息后,用户可以单击“保存”按钮以保存已更改的学生信息。
如果用户需要删除一个或多个学生的信息,他们可以通过单击“删除”按钮来进行。
用户可以选择要删除的学生并单击“删除”按钮,该学生的所有信息将从系统中删除。
系统允许用户使用多种参数搜索学生信息。
例如,用户可以根据学生姓名、年龄、性别、学号等来搜索学生信息。
python sqlite3 cursor 对象的方法

python sqlite3 cursor 对象的方法SQLite 是一种嵌入式数据库,因其轻量级和易于使用而广受欢迎。
在Python 中,通过与sqlite3 模块的交互,我们可以方便地操作SQLite 数据库。
cursor 对象是执行SQL 语句并返回结果的关键。
本文将详细介绍Python 中sqlite3 cursor 对象的常用方法。
### Python sqlite3 cursor 对象的方法#### 1.execute(sql[, parameters])`execute` 方法用于执行一个SQL 语句。
如果语句中有占位符,可以通过`parameters` 参数提供相应的值。
```pythoncursor.execute("INSERT INTO table_name (column1, column2) VALUES (?, ?)", (value1, value2))```#### 2.executemany(sql, seq_of_parameters)当需要批量插入或更新数据时,`executemany` 方法非常有用。
它重复执行SQL 语句,为每条语句提供来自`seq_of_parameters` 的参数。
```pythoncursor.executemany("INSERT INTO table_name (column1, column2) VALUES (?, ?)", [(value1, value2), (value3, value4)])```#### 3.executescript(sql_script)如果需要执行包含多条语句的脚本,可以使用`executescript` 方法。
```pythoncursor.executescript("BEGIN TRANSACTION; DELETE FROMtable_name; COMMIT;")```#### 4.fetchone()`fetchone` 方法获取查询结果中的下一条记录,返回一个序列,或者在没有更多数据时返回`None`。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CREATE TABLE
column-def ::= name [type] [[CONSTRAINTБайду номын сангаасname] column-constraint]*
type ::=
typename | typename ( number ) | typename ( number , number )
column-constraint :: =
删除一个索引。 语法:
sql-command :: DROP INDEX [database-name .] index-name
=
例子: DROP INDEX idx_email;
将新行插入到表。 语法:
sql-statement :: =
CREATE [TEMP | TEMPORARY] TRIGGER trigger-name [ BEFORE | AFTER ] database-event ON [database-name .] table-name trigger-action
sql-statement :: =
Sqlite3 简明使用教程(Python 版) 一、安装 去 PySqlite?主页上下载安装包,有 windows 的版本,现支持 Python 2.2 和 2.3 版本。 二、创建数据库/打开数据库 Sqlite 使用文件作为数据库,你可以指定数据库文件的位置。
>>> import sqlite >>> cx = sqlite.connect("d:/test.db", encoding='cp936') 使 用 sqlite 的 connect 可以创建一个数据库文件,上面我指明了路径。当数据库文件不存在的时候,它会自动创建。如果 已经存在这个文件,则打开这个 文件。encoding 指明保存数据所使用的编码,这里 cp936 是 Python 中自带的编码,其实 就是 GBK 编码。cx 为数据库连接对象。 三、操作数据库的基本对象 3.1 数据库连接对象 象前面的 cx 就是一个数据库的连接对象,它可以有以下操作: commit()--事务提交 rollback()--事务回滚 close()--关闭一个数据库连接 cursor()--创建一个游标 3.2 游标对象 所有 sql 语句的执行都要在游标对象下进行。 cu = cx.cursor() 这样定义了一个游标。游标对象有以下的操作: execute()--执行 sql 语句 executemany--执行多条 sql 语句 close()--关闭游标 fetchone()--从结果中取一条记录 fetchmany()--从结果中取多条记录 fetchall()--从结果中取出多条记录 scroll()--游标滚动 关于对象的方法可以去 Python 主页上查看 DB API 的详细文档。不过 PySqlite?到底支持 DB API 到什么程序,我就不知道 了。我列出的操作都是支持的,不过我不是都使用过。 四、使用举例 4.1 建库 前面已经有了,不再重复。(这些例子,如果你有兴趣,可以直接在 Python 的交互环境下试试) 4.2 建表 >>> cu=cx.cursor() >>> cu.execute("""create table catalog (
删除一个触发器。 语法:
sql-statement :: DROP TRIGGER [database-name .] trigger-name
=
DROP INDEX 数据操作 INSERT UPDATE DELETE
SELECT
例子: DROP TRIGGER update_customer_address;
删除表定义及该表的所有索引。 语法:
sql-command :: DROP TABLE [database-name.] table-name
=
例子: DROP TABLE customers;
删除一个视图。 语法:
sql-command :: =
DROP VIEW view-name
例子: DROP VIEW master_view;
trigger-step :: update-statement | insert-statement | = delete-statement | select-statement
例子:
CREATE INDEX 结构删除 DROP TABLE DROP VIEW DROP TRIGGER
CREATE TRIGGER update_customer_address UPDATE OF address ON customers BEGIN UPDATE orders SET address = new.address WHERE customer_name = ; END;
id integer primary key, pid integer, name varchar(10) UNIQUE )""") 上面语句创建了一个叫 catalog 的表,它有一个主键 id,一个 pid,和一个 name,name 是不可以重复的。 关于 sqlite 支持的数据类型,在它主页上面的文档中有描述,可以参考:Version 2 DataTypes? 4.3 insert(插入) >>> cu.execute("insert into catalog values(0, 0, 'name1')") >>> cu.execute("insert into catalog values(1, 0, 'hello')") >>> mit() 如果你愿意,你可以一直使用 cu 游标对象。注意,对数据的修改必须要使用事务语句:commit()或 rollback(),且对象是 数据库连接对象,这里为 cx。
4.4 select(选择) >>> cu.execute("select * from catalog") >>> cu.fetchall() [(0, 0, 'name2'), (1, 0, 'hello')]
fetchall() 返回结果集中的全部数据,结果为一个 tuple 的列表。每个 tuple 元素是按建表的字段顺序排列。注意,游标 是有状态的,它可以记录当前已经取到结果的 第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如 果执行 fetchone()会返回为空。这一点在测试时需要注意。
DELETE | INSERT | UPDATE | UPDATE OF column-list
trigger-action :: =
[ FOR EACH ROW | FOR EACH STATEMENT ] [ WHEN expression ] BEGIN
trigger-step ; [ trigger-step ; ]* END
CREATE [TEMP | TEMPORARY] TRIGGER trigger-name INSTEAD OF database-event ON [database-name .] view-name trigger-action
CREATE TRIGGER
database-event :: =
column-name ::= name [ COLLATE collation-name] [ ASC | DESC ]
例子: CREATE INDEX idx_email ON customers (email); 说明: 为 customers 表中的 email 创建一个名为 idx_email 的字段。
NOT NULL [ conflict-clause ] | PRIMARY KEY [sort-order] [ conflict-clause ] | UNIQUE [ conflict-clause ] | CHECK ( expr ) [ conflict-clause ] | DEFAULT value |
为给定表或视图创建索引。 语法:
sql-statement :: =
CREATE [UNIQUE] INDEX index-name ON [database-name .] table-name ( column-name [, column-name]* ) [ ON CONFLICT conflict-algorithm ]
COLLATE collation-name
constraint ::=
PRIMARY KEY ( column-list ) [ conflict-clause ] | UNIQUE ( column-list ) [ conflict-clause ] | CHECK ( expr ) [ conflict-clause ]
说明: 创建了一个名为 update_customer_address 的触发器,当用户更新 customers 表中的 address 字段 时,将触发并更新 orders 表中的 address 字段为新的值。 比如执行如下一条语句: UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones'; 数据库将自动执行如下语句: UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';
结构定义
创建新表。 语法: