一个简单的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管道

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何以Json格式从POST请求中获取对象列表   java无法在条形图中显示条形标签   java如何自动调整JSplitPane?   使用Apache POI库时,java无法读取一行中的所有单元格值   将参数传递给已经运行的nsis java启动器   java列出所有lotus notes数据库   java JNI:动态链接库(DLL)初始化例程失败   java无法执行目标组织。阿帕奇。专家插件:mavencompilerplugin:3.1:produitwebapp项目上的编译(defaultcompile)   运行时错误线程“main”java中的异常。lang.Stackoverflowerr。我已经在Gfg上写了一个快速排序代码。需要得到清楚的解释   jdbc NetSuite java。lang.NoClassDefFoundError:getConnection上的sun/io/MalformedInputException   java AWS Pinpoint发送电子邮件失败