一个简单的sqlite包装器。
smartninja-sql的Python项目详细描述
智能忍者SQL
关于
smartninja sql是sqlite数据库的一个简单包装器(将来可能会添加对其他数据库的支持)。
此工具的目的是简化与sqlite的连接并从中获取相关数据。
重要:这不是对象关系映射器(orm)。您仍然需要编写sql查询。
安装
这是PIP软件包:
pip install smartninja-sql
包有一个依赖项,prettytable
。它会自动安装。
该包需要Python3(不适用于Python2)。
用法
看看这个基本用法示例:
fromsmartninja_sql.sqliteimportSQLiteDatabasedb=SQLiteDatabase()db.execute("""CREATE TABLE IF NOT EXISTS User ( id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer);""")db.print_tables(verbose=True)
如果打开与如下数据库的连接:db = SQLiteDatabase()
,则数据库将仅在内存中创建。当程序完成时,数据库将丢失。
如果需要持久数据库,请输入数据库名称:
db=SQLiteDatabase(name="my_database.sqlite")
如果这个数据库还不存在,Python将为您创建它。如果它确实存在,它将连接到它。
打印表格数据(名称和字段)
此方法打印数据库中有关表的数据。默认情况下,verbose
参数是False
-在这种情况下,该方法只打印表的名称:
# same result in both casesdb.print_tables()db.print_tables(verbose=False)
但是,如果将verbose
设置为True
,则该方法还将输出每个表中的所有字段名,以及它们各自的^{str1}$类型:
db.print_tables(verbose=True)
查询
使用.execute()
方法执行数据库语句:
# create tabledb.execute("""CREATE TABLE IF NOT EXISTS User ( id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer);""")db.print_tables(verbose=True)# alter (edit) tabledb.execute("ALTER TABLE User ADD email TEXT;")db.print_tables(verbose=True)# the table has a new field: email# insert data into a tabledb.execute("INSERT INTO User (name, age, email) VALUES ('Matt', 31, 'matt@example.org')")db.execute("INSERT INTO User (name, age, email) VALUES ('Nina', 25, 'nina@example.org')")# get data (select) and print itprint(db.execute("SELECT * FROM User;"))print(db.execute("SELECT * FROM User WHERE age=25;"))print(db.execute("SELECT * FROM User WHERE age=26;"))
如果您熟悉sqlite3
库,则此方法返回.fetchall()
结果。
漂亮的印花
.pretty_print()
方法与.execute()
方法的功能相同,只是它还以
终端中的表(使用prettytable
包)。
db.pretty_print("SELECT * FROM User;")
连接和光标
SmartNinja SQL包装器旨在简化使用sqlite3
库的工作。但是如果您想直接访问连接和光标变量,那么您肯定可以:
connection=db.conncursor=db.cursor
但你很可能不需要。
关闭光标和连接
只需使用一个方法即可关闭光标和连接:
db.close()
待办事项
- 测试
- CI管道