python--sqlite3

  • 资料来源:

    https://docs.python.org/zh-cn/3/library/sqlite3.html

  • 更新

    1
    2021.04.10 初始

导语

一些简单使用记录,老早之前用过都忘了…

使用

初始化:

  • sqlite3.connect 一般是文件,:memory: 则将创建一个临时的内存数据库.
  • cursor() 是实际执行 sql 语句
1
2
3
con = sqlite3.connect("./bgp.db")
con2 = sqlite3.connect(":memory:")
cur = con2.cursor()

建立不重复表

  • 主要是通过 UNIQUE 声明
  • ps: 重要操作一定要 commit 保证存到数据库了.
1
2
3
4
5
6
7
8
9
10
init = '''CREATE TABLE IF NOT EXISTS ip
(prefix KEY,
asn NUMBER,
lng NUMBER,
lat NUMBER,
UNIQUE(prefix));
'''

cur.execute(init)
con.commit()

插入但不替换数据

  • INSERT OR IGNORE 如果数据存在就跳过
  • 这个插入格式是 python sqlite3 独有的,不适用于其他语言.
  • 直接执行通用 sql 语句也没问题,但是并不建议,虽然没人来破解这个没有的程序,还是预防 sql 注入….
  • ps: data 是个 list
1
cur.executemany('INSERT OR IGNORE INTO ip VALUES (?,?,?,?)', [data])

备份内存数据库

  • backup() 函数而已
  • 需要性能的,一般先复杂到内存数据库,同理
1
2
3
4
5
con.commit()
source = sqlite3.connect('./bgp.db')
with con:
con.backup(source)
source.close()

关闭数据库: 千万别忘记 commit

1
2
3
con.commit()
cur.close()
con.close()