python Sqlite3相关基本操作

1、连接数据库

1 import sqlite3
2
3 conn = sqlite3.connect(‘test.db‘)

2、创建表

 1 import sqlite3
 2
 3 conn = sqlite3.connect(‘test.db‘)
 4 print "Opened database successfully";
 5 c = conn.cursor()
 6 c.execute(‘‘‘CREATE TABLE COMPANY
 7        (ID INT PRIMARY KEY     NOT NULL,
 8        NAME           TEXT    NOT NULL,
 9        AGE            INT     NOT NULL,
10        ADDRESS        CHAR(50),
11        SALARY         REAL);‘‘‘)
12 print "Table created successfully";
13 conn.commit()
14 conn.close()

3、INSERT 操作

 1 import sqlite3
 2
 3 conn = sqlite3.connect(‘test.db‘)
 4 c = conn.cursor()
 5 print "Opened database successfully";
 6
 7 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)  8       VALUES (1, ‘Paul‘, 32, ‘California‘, 20000.00 )");
 9
10 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 11       VALUES (2, ‘Allen‘, 25, ‘Texas‘, 15000.00 )");
12
13 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 14       VALUES (3, ‘Teddy‘, 23, ‘Norway‘, 20000.00 )");
15
16 c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) 17       VALUES (4, ‘Mark‘, 25, ‘Rich-Mond ‘, 65000.00 )");
18
19 conn.commit()
20 print "Records created successfully";
21 conn.close()

4、SELECT 操作

 1 import sqlite3
 2
 3 conn = sqlite3.connect(‘test.db‘)
 4 c = conn.cursor()
 5 print "Opened database successfully";
 6
 7 cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
 8 for row in cursor:
 9    print "ID = ", row[0]
10    print "NAME = ", row[1]
11    print "ADDRESS = ", row[2]
12    print "SALARY = ", row[3], "\n"
13
14 print "Operation done successfully";
15 conn.close()

5、UPDATE 操作

 1 import sqlite3
 2
 3 conn = sqlite3.connect(‘test.db‘)
 4 c = conn.cursor()
 5 print "Opened database successfully";
 6
 7 c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
 8 conn.commit()
 9 print "Total number of rows updated :", conn.total_changes
10
11 cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
12 for row in cursor:
13    print "ID = ", row[0]
14    print "NAME = ", row[1]
15    print "ADDRESS = ", row[2]
16    print "SALARY = ", row[3], "\n"
17
18 print "Operation done successfully";
19 conn.close()

6、DELETE 操作

import sqlite3

conn = sqlite3.connect(‘test.db‘)
c = conn.cursor()
print "Opened database successfully";

c.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

7、执行sql语句时的格式

执行SQL语句。 可以是参数化 SQL 语句(即,在 SQL 语句中使用占位符)。sqlite3 模块支持两种占位符:问号(qmark风格)和命名占位符(命名风格)。

示例如下:

 1 import sqlite3
 2
 3 con = sqlite3.connect(":memory:")
 4 cur = con.cursor()
 5 cur.execute("create table people (name_last, age)")
 6
 7 who = "Yeltsin"
 8 age = 72
 9
10 # This is the qmark style:
11 cur.execute("insert into people values (?, ?)", (who, age))
12
13 # And this is the named style:
14 cur.execute("select * from people where name_last=:who and age=:age", {"who": who, "age": age})
15
16 print(cur.fetchone())
17
18 con.close()

8、外键使用

1. sqlite3 默认为关闭外键限制的,如要打开,请执行如下命令:

1 PRAGMA FOREIGN_KEYS=ON;

2、外键创建:

 1 create table parent_t
 2
 3 (
 4 parent_id INTEGER NOT NULL PRIMARY KEY,
 5 parent_name TEXT
 6 );
 7
 8 create table child_t
 9 (
10 child_t INTEGER NOT NULL PRIMARY KEY,
11 child_name TEXT NOT NULL,
12 parent_id INTEGER NOT NULL,
13 FOREIGN KEY (parent_id) REFERENCES parent_t(parent_id) ON DELETE CASCADE ON UPDATE CASCADE
14 );

3、另一种创建方式:

 1 create table parent_t
 2
 3 (
 4 parent_id INTEGER NOT NULL PRIMARY KEY,
 5 parent_name TEXT
 6 );
 7
 8 create table child_t
 9 (
10 child_t INTEGER NOT NULL PRIMARY KEY,
11 child_name TEXT NOT NULL,
12 parent_id INTEGER NOT NULL,
13 parent_id INTEGER REFERENCES parent_t(parent_id) ON DELETE CASCADE ON UPDATE CASCADE
14 );

9、其他sql语句

1.SqLite判断表是否存在,如果存在则删除该表:

1 DROP TABLE IF EXISTS TableName

2.SqLite判断表是否存在,如果不存在则创建指定的表:

1 CREATE TABLE IF NOT EXISTS TableName(
2     Id          INTEGER         PRIMARY KEY AUTOINCREMENT,
3     Url         VARCHAR( 150 ),
4     IsCrawled   BOOLEAN         NOT NULL,
5     CreatedOn   DATETIME        NOT NULL,
6     CrawledDate DATETIME
7 );

原文地址:https://www.cnblogs.com/lzhida/p/12273861.html

时间: 2024-08-30 01:45:51

python Sqlite3相关基本操作的相关文章

python文件相关操作

Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中,open()方法进行打开文件等相关操作,open()方法其中第一个参数是要打开的文件的文件路径,第二个参数是对要打开文件要执行的权限,第三个参数是文件采用字符编码. 而open()方法返回的内容叫做文件句柄.我们可以打印返回的文件句柄来看下: f = open('test_file.txt','r

python sqlite3 数据库操作

SQLite3是python的内置模块,是一款非常小巧的嵌入式开源数据库软件. 1. 导入Python SQLite数据库模块 import sqlite3 2. python sqlite3模块的API """ sqlite3.connect(database [,timeout ,other optional arguments]) 该 API 打开一个到 SQLite 数据库文件 database 的链接.您可以使用 ":memory:" 来在 RA

[Python]sqlite3二进制文件存储问题(BLOB)(You must not use 8-bit bytestrings unless you use a text_factory...)

事情是这样的: 博主尝试用Python的sqlite3数据库存放加密后的用户名密码信息,表是这样的 CREATE TABLE IF NOT EXISTS user ( userID INTEGER PRIMARY KEY AUTOINCREMENT, userStudentID BLOB NOT NULL UNIQUE ON CONFLICT IGNORE, userPassword BLOB NOT NULL ); 其中userStudentID and UserPassword 储存成了BL

Linux环境下非root用户安装Python及相关库

以前在使用python的时候,都是使用root用户安装好的全局python,现在,因为root用户安装的Python版本太低,同时自己没有root权限去对全局Python升级,所以要在非root用户下安装自己指定的Python.因此,就重新整理了一份如何在Linux环境下使用非root用户安装python及其相关的库,以备不时之需. 安装python python版本库https://www.python.org/ftp/python/,此处我选择2.7.5版本的,在安装python的时候,使用

python 列表相关内容

python 列表相关内容 1.增加2.修改3.切片4.清空5.删除6.杂项 #定义两个列表name2 = [1,2,3,4]name_list = ['zhang','wang','li','liu','yang' ,['ding','guo'],'zhao'] 1.列表的追加操作:name_list.append(name2)print(name_list)输出结果:['zhang', 'wang', 'li', 'liu', 'yang', ['ding', 'guo'], 'zhao',

Python安装相关

Python安装相关 第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包: 第二步:安装 A.双击下载好的安装包,弹出如下界面: 这里要注意的是,将python加入到windows的环境变量中,如果忘记打勾,则需要手工加到环境变量中:在这里我选择的是自定义安装,点击"自定义安装"进行下一步操作: B.进入到下一步

Python - celery 相关报错 - AttributeError: type object '_multiprocessing.win32' has no attribute 'WAIT_OBJECT_0'

报错场景 执行   celery worker -A tasks -l INFO  打开 worker 的时候报错无法进行 报错解决 Celery 的版本过高, 进行降级处理即可 pip install celery==3.1.25 降级后再次执行会触发 另一报错 此报错原因是 redis 的版本过高导致 对 redis 进行降级即可  pip install redis==2.10.6 Python - celery 相关报错 - AttributeError: type object '_m

python sqlite3使用详解

Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它使用一个文件存储整个数据库,操 作十分方便.它的最大优点是使用方便,功能相比于其它大型数据库来说,确实有些差距.但是性能表现上,SQLITE并不逊色.麻雀虽小,五脏俱全, sqlite 实现了多数 sql-92 的标准,比如说 transaction . trigger 和复杂的查询等. python的数据库模块有统一的接口标准,所以数据库操作都有统一的模式,基本上都是

Python 正则表达式相关问题

这几天学习python,写正则表达式相关代码如下: import re print(re.search(r'(?<=<(\w+)>).*(?=<\/\1>)',"<b>ewuiiriur</b>sdksfkj").span()) 报错如下: raise error("look-behind requires fixed-width pattern")sre_constants.error: look-behind