python 操作 sqlite3

环境:Windows10 x64 + Python3.7

import sqlite3

# 第一步:连接数据库(如果数据库不存在就会创建新的数据库)
# 可以指定创建数据库的路径,比如可以写成sqlite3.connect(r"E:\DEMO.db")
con = sqlite3.connect("DEMO.db")

# 第二步:创建游标
cur = con.cursor()

# 第三步:CURD操作
# (一) 创建表
sql = "CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)"
cur.execute(sql)

# (二) 添加数据(需要提交)
# ①:添加单条数据
data = "1,'Desire',5"
cur.execute('INSERT INTO test VALUES (%s)' % data)
# ②:添加单条数据
cur.execute("INSERT INTO test values(?,?,?)", (6, "zgq", 20))
# ③:添加多条数据
cur.executemany('INSERT INTO test VALUES (?,?,?)', [(3, 'name3', 19), (4, 'name4', 26)])

# (三) 更新数据(需要提交)
# 方式一
cur.execute("UPDATE test SET name=? WHERE id=?", ("nihao", 1))
# 方式二
cur.execute("UPDATE test SET name='haha' WHERE id=3")

# (四) 删除数据(需要提交)
# 方式一
cur.execute("DELETE FROM test WHERE id=?", (1,))
# 方式二
cur.execute("DELETE FROM test WHERE id=3")

# (五) 查询数据
# 1、查询所有数据
cur.execute("select * from Test")
print(cur.fetchall())

# 取数据 第一种方式 使用的其他表
cur.execute("SELECT id,url,title,visit_count,last_visit_time from urls order by last_visit_time desc")
results = cur.fetchall()
# <class 'list'>
print(type(results))
# print(results)

for row in results:
    _id = row[0]
    url = row[1]
    title = row[2]
    visit_count = row[3]
    last_visit_time = row[4]
    print(_id, url, title, visit_count, last_visit_time)

# 取数据 第二种方式 使用的其他表
'''
cursor = cur.execute("SELECT id,url,title,visit_count,last_visit_time from urls order by last_visit_time desc")
# <class 'sqlite3.Cursor'>
print(type(cursor))
for _id, url, title, visit_count, last_visit_time in cursor:
    print(_id,url,title,visit_count,last_visit_time)
'''

# 2、查询第一条数据
cur.execute("select * from Test")
print(cur.fetchone())

# 3、查询多条数据
print(cur.fetchmany(3))

# 第四步:事务的提交和回滚
# 提交
con.commit()

# 回滚
con.rollback()

# 第五步:断开会话连接,释放资源
# 关闭游标
cur.close()
# 断开数据库连接
con.close()

'''
其他信息:

2 打开数据库
connect方法返回con对象,即是数据库链接对象,它提供了以下方法:

方法	描述
.cursor()	创建一个游标对象
.commit()	处理事务提交
.rollback()	处理事务回滚
.close()	关闭一个数据库连接

3、创建游标
游标对象有以下方法支持数据库操作:

方法	描述
.execute()	用来执行sql语句
.executemany()	用来执行多条sql语句
.close()	用来关闭游标
.fetchone()	用来从结果中取一条记录,并将游标指向下一条记录
.fetchmany()	用来从结果中取多条记录。
.fetchall()	用来从结果中取出所以记录。
.scroll()	用于游标滚动。

SQLite 存储类

存储类	描述
NULL	值是一个 NULL 值。
INTEGER	值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
REAL	值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
TEXT	值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
BLOB	值是一个 blob 数据,完全根据它的输入存储。
SQLite 的存储类稍微比数据类型更普遍。INTEGER 存储类,例如,包含 6 种不同的不同长度的整数数据类型。

Date 与 Time 数据类型
SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。

存储类	日期格式
TEXT	格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。
REAL	从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。
INTEGER	从 1970-01-01 00:00:00 UTC 算起的秒数。
您可以以任何上述格式来存储日期和时间,并且可以使用内置的日期和时间函数来自由转换不同格式。

参考:
https://www.cnblogs.com/desireyang/p/12102143.html
https://blog.csdn.net/GuoQiZhang/article/details/91344509
https://www.runoob.com/sqlite/sqlite-data-types.html
'''

猜你喜欢

转载自blog.csdn.net/yudiandian2014/article/details/132544001