为了以后操作使用Sqlite3做准备, 上周上班的时候特意试了一下用操作数据库的数据, 为了方便直接用了sqlite3, 没想到sqlite3并不是所有语句都支持, 并且sqlite自由的点命令是无法被python的sqlite模块调用的….
简单的使用方式:
1 2 3 4 5 6 7
| import sqlite3 conn = sqlite3.connect('test.db') cursor = conn.cursor() cursor.execute('sql cmd') cursor.close() conn.commit() conn.close()
|
- 使用中的注意事项
- 只支持标准的SQL语句, 由于使用的是sqlite, 其不支持的SQL语法一概无法使用, 也不支持使用sqlite特有的点命令, 因为这些命令本质上是在shell内执行的, 不是SQL语句
- 如果一定要使用点命令, 则需要使用os模块或其他可以调用shell的模块, 本质上是在执行shell命令
- 不是所有的操作都一定要指针对象完成, 有部分可以使用数据库对象, 这样可以少写两句, 具体见菜鸟教程网站的介绍
- 注意一定要确认更改(
obj.commit()
), 否则数据库内的内容是不会变化的
- 尝试使用了with的方式进行连接, 但是在with语句的范围外是不会自动断开连接的(
obj.close()
), 所以还是得老实写
调用点命令的方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import os, textwrap
def cmd_gen(cmd_str): cmd_str = textwrap.dedent(cmd_str) cmd_str = cmd_str.strip() return cmd_str
db_file = 'test.db' index_file = 'index.txt'
cmd = cmd_gen(''' sqlite3 {db_file} << EOF .separator "\\t" .import {index_file} idx_tab EOF '''.format(db_file=db_file, index_file=index_file)) os.system(cmd)
|