>>> from env_helper import info; info()
页面更新时间: 2024-07-23 22:05:07
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-23-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

8.4. 针对数据表的操作

8.4.1. 开始运行

>>> import os,shutil,stat
>>> import sqlite3 as sqlite
>>>
>>> conn = sqlite.connect(':memory:')
>>> conn.enable_load_extension(True)
>>> conn.execute('SELECT load_extension("mod_spatialite.so.7")')
>>> cursor = conn.cursor()

8.4.2. 创建表

创建一个新表,并在其中插入一些记录:

>>> cursor.execute('CREATE TABLE MyTable (name TEXT NOT NULL, geom BLOB NOT NULL)')
>>> cursor.execute("INSERT INTO MyTable (name, geom) VALUES ('one', GeomFromText('POINT(1 1)'))")
>>> cursor.execute("INSERT INTO MyTable (name, geom) VALUES ('two', GeomFromText('POINT(2 2)'))")
>>> cursor.execute("INSERT INTO MyTable (name, geom) VALUES ('three', GeomFromText('POINT(3 3)'))")
>>> cursor.execute("SELECT name, AsText(geom) FROM MyTable;")
>>> [print(rec) for rec in cursor]
('one', 'POINT(1 1)')
('two', 'POINT(2 2)')
('three', 'POINT(3 3)')
[None, None, None]

CREATE TABLE 语句是用来创建一个新表的,创建的时候要指明它要包含的属性列。 属性列的定义可以在后期添加、删除,或修改类型都可以。

还应该了解,一个地理空间属性列的类型是 BLOBINSERT INTO 语句可以在数据表中存储新行。 使用 GeoMFromText() ,你可以创建新的几何对象数据。 最后,使用 SELECT 语句,执行了一个最终的检查。

8.4.3. 更新表

更新行与插入或删除它们是一样简单的:

>>> cursor.execute("SELECT name, AsText(geom) FROM mytable")
<sqlite3.Cursor at 0x7f3e96f83140>
>>> [print(rec) for rec in cursor]
('one', 'POINT(1 1)')
('two', 'POINT(2 2)')
('three', 'POINT(3 3)')
[None, None, None]
  • UPDATE SQL语句允许您修改任何列值。

  • 你只需要SET列名称和新的值即可替换当前的。你可以像往常一样使用GeomFromText()函数获取几何值。 PK_UID列是一个特殊的函数,作为这个表的主要键。

  • 在每个表中,PRIMARY KEY列都保证您唯一 一行可能包含一个选定的值,从而确保一致性。

如果你的一张表格,由于任何原因,没有主要的钥匙,别担心; SQLite自动管理表中每一行都有用,每个行的名称都是ROWID; 您可以直接引用SQL表达式,就像普通的列表一样。

还要注意,在这个例子中,你显然没有使用任何交易。(您既不使用BEGIN也不使用COMMIT)

  • 一个新的事务隐式地为每个SQL语句被开始

  • 并且在处理后自动执行隐式COMMIT SQL语句。

  • 这可能很容易导致或多或少严重的性能下降; 到目前为止,SQLite更倾向于您明确的BEGIN和COMMIT 交易,特别是当你执行许多和许多 连续的INSERT和/或UPDATE。

8.4.4. 选择数据创建新表格

以下示例需要原始的my_new_db.sqlite数据库。 因此,避免我们执行的DELETE和UPDATE导致任何错位,现在重建它更好。

SQLite的SQL语法为您提供了一种直观的方式来创建一个新的表,并同时使用从另一个表格中选出的数据进行填充。