随着视频技术的迅速发展以及移动互联网的不断普及,越来越多的人开始使用手机、平板等移动设备观看视频,而这样的设备又往往由于存储空间有限,需要一种轻量级的存储方式。在这类需求下,SQLite数据库成为了存储视频的首选。

1. SQLite数据库的简介

在介绍SQLite数据库在存储视频中的应用之前,我们需要先了解一下SQLite数据库的基本概念。SQLite是一种轻量级的关系型数据库,其数据库引擎实现在一个相对小的C库中,不需要与独立的服务器进行交互,可直接嵌入到应用程序中使用。因此,SQLite具有占用空间小、性能高、易于维护等诸多优点,特别适用于嵌入式系统或移动设备等有限空间的环境下。

2. SQLite数据库在存储视频中的应用

在移动设备中,存储空间通常比较有限,而且视频文件体积较大,因此传统的视频存储方式(如本地存储、储存在云端)不仅占用存储空间,同时还会影响用户观看视频的体验。相比之下,SQLlite数据库具有较小的占用空间,可以在存储大量视频的同时,减少占用存储空间的负担,提高存储效率。

另外,SQLite数据库支持多种数据类型(如BLOB、TEXT、INTEGER等),可实现对视频、图片、音频等多种格式的存储和操作。同时,SQLite也支持事务处理和数据备份等功能,保证数据的安全性和完整性,给用户提供更好的保障。

3. SQLite数据库在视频应用中的实践

实践证明,SQLite数据库已经被广泛应用于视频应用中。例如,在一些流媒体应用中,采用SQLite数据库存储视频信息和用户数据,便于实现多平台共享,同时可减少服务器成本和网络流量。又如,一些观看视频的应用,在使用SQLite数据库储存视频时,结合缓存、网络传输技术等技术手段,提高了用户观看视频的体验,降低了卡顿等问题。

SQLite数据库是一种轻量级的存储视频的首选。在实际的应用中,SQLite数据库不仅能够提高存储效率,保证数据完整性,还能够实现多种格式的存储和操作。对于移动设备和服务器开发人员,选择SQLite数据库作为视频存储方式,是一种明智而可行的选择。

相关问题拓展阅读:

后端编程Python3-数据库编程

对大多数软件开发者而言,术语数据库通常是指RDBMS(关系数据库管理系统), 这些系统使用表格(类似于电子表格的网格),其中行表示记录,列表示记录的字段。表格及其中存放的数据是使用SQL (结构化査询语言)编写的语句来创建并操纵的。Python提供了用于操纵SQL数据库的API(应用程序接口),通常与作为标准的SQLite 3数据库一起发布。

另一种数据库是DBM (数据库管理器),其中存放任意数量的键-值项。Python 的标准库提供了几种DBM的接口,包括某些特定于UNIX平台的。DBM的工作方式 与Python中的字典类似,区别在于DBM通常存放于磁盘上而不是内存中,并且其键与值总是bytes对象,并可能受到长度限制。本章之一节中讲解的shelve模块提供了方便的DBM接口,允许我们使用字符串作为键,使用任意(picklable)对象作为值。

如果可用的 DBM 与 SQLite 数据库不够充分,Python Package Index, pypi.python.org/pypi中提供了大量数据库相关的包,包括bsddb DBM (“Berkeley DB”),对象-关系映射器,比如SQLAlchemy (www.sqlalchemy.org),以及流行的客户端/服务器数据的接口,比如 DB2、Informix、Ingres、MySQL、ODBC 以及 PostgreSQL。

本章中,我们将实现某程序的两个版本,该程序用于维护一个DVD列表,并追踪每个DVD的标题、发行年份、时间长度以及发行者。该程序的之一版使用DBM (通过shelve模块)存放其数据,第二版则使用SQLite数据库。两个程序都可以加载与保存简单的XML格式,这使得从某个程序导出DVD数据并将其导入到其他程序成为可能。与DBM版相比,基于SQL的程序提供了更多一些的功能,并且其数据设计也稍干净一些。

12.1 DBM数据库

shelve模块为DBM提供了一个wrapper,借助于此,我们在与DBM交互时,可以将其看做一个字典,这里是假定我们只使用字符串键与picklable值,实际处理时, shelve模块会将键与值转换为bytes对象(或者反过来)。

由于shelve模块使用的是底层的DBM,因此,如果其他计算机上没有同样的DBM,那么在某台计算机上保存的DBM文件在其他机器上无法读取是可能的。为解决这一问题,常见的解决方案是对那些必须在机器之间可传输的文件提供XML导入与导出功能,这也是我们在本节的DVD程序dvds-dbm.py中所做的。

对键,我们使用DVD的标题;对值,则使用元组,其中存放发行者、发行年份以及时间。借助于shelve模块,我们不需要进行任何数据转换,并可以把DBM对象当做一个字典进行处理。

程序在结构上类似于我们前面看到的那种菜单驱动型的程序,因此,这里主要展示的是与DBM程序设计相关的那部分。下面给出的是程序main()函数中的一部分, 忽略了其中菜单处理的部分代码。

db = None

try:

db = shelve.open(filename, protocol=pickle.HIGHEST_PROTOCOL)

finally:

if db is not None:

db.dose()

这里我们已打开(如果不存在就创建)指定的DBM文件,以便于对其进行读写操作。每一项的值使用指定的pickle协议保存为一个pickle,现有的项可以被读取, 即便是使用更底层的协议保存的,因为Python可以计算出用于读取pickle的正确协议。最后,DBM被关闭——其作用是清除DBM的内部缓存,并确保磁盘文件可以反映出已作的任何改变,此外,文件也需要关闭。

该程序提供了用于添加、编辑、列出、移除、导入、导出DVD数据的相应选项。除添加外,我们将忽略大部分用户接口代码,同样是因为已经在其他上下文中进行了展示。

def add_dvd(db):

title = Console.get_string(“Title”, “title”)

if not title:

return

director = Console.get_string(“Director”, “director”)

if not director:

return

year = Console.get_integer(“Year”, “year”,minimum=1896,

maximum=datetime,date.today().year)

duration = Console.get_integer(“Duration (minutes)”, “minutes“, minimum=0, maximum=60*48)

db = (director, year, duration) </p> <p><p> db.sync() </p> <p> 像程序菜单调用的所有函数一样,这一函数也以DBM对象(db)作为其唯一参数。该函数的大部分工作都是获取DVD的详细资料,在倒数第二行,我们将键-值项存储在DBM文件中,DVD的标题作为键,发行者、年份以及时间(由shelve模块pickled在一起)作为值。 </p> <p> 为与Python通常的一致性同步,DBM提供了与字典一样的API,因此,除了 shelve.open() 函数(前面已展示)与shelve.Shelf.sync()方法(该方法用于清除shelve的内部缓存,并对磁盘上文件的数据与所做的改变进行同步——这里就是添加一个新项),我们不需要学习任何新语法。 </p> <p> def edit_dvd(db): </p> <p> old_title = find_dvd(db, “edit”) </p> <p> if old_title is None: </p> <p> return </p> <p> title = Console.get.string(“Title”, “title”, old_title) </p> <p> if not title: </p> <p> return </p> <p> director, year, duration = db </p> <p><p> … </p> <p> db<title>= (director, year, duration) </p> <p><p> if title != old_title: </p> <p> del db </p> <p><p> db.sync() </p> <p> 为对某个DVD进行编辑,用户必须首先选择要操作的DVD,也就是获取DVD 的标题,因为标题用作键,值则用于存放其他相关数据。由于必要的功能在其他场合 (比如移除DVD)也需要使用,因此我们将其实现在一个单独的find_dvd()函数中,稍后将査看该函数。如果找到了该DVD,我们就获取用户所做的改变,并使用现有值作为默认值,以便提高交互的速度。(对于这一函数,我们忽略了大部分用户接口代码, 因为其与添加DVD时几乎是相同的。)最后,我们保存数据,就像添加时所做的一样。如果标题未作改变,就重写相关联的值;如果标题已改变,就创建一个新的键-值对, 并且需要删除原始项。 </p> <p> def find_dvd(db, message): </p> <p> message = “(Start of) title to ” + message </p> <p> while True: </p> <p> matches = </p> <p> start = Console.get_string(message, “title”) </p> <p> if not start: </p> <p> return None </p> <p> for title in db: </p> <p> if title.lower().startswith(start.lower()): </p> <p> matches.append(title) </p> <p> if len(matches) == 0: </p> <p> print(“There are no dvds starting with”, start) </p> <p> continue </p> <p> elif len(matches) == 1: </p> <p> return matches </p> <p><p> elif len(matches) > DISPLAY_LIMIT: </p> <p> print(“Too many dvds start with {0}; try entering more of the title”.format(start) </p> <p> continue </p> <p> else: </p> <p> matches = sorted(matches, key=str.lower) </p> <p> for i, match in enumerate(matches): </p> <p> print(“{0}: {1}”.format(i+1, match)) </p> <p> which = Console.get_integer(“Number (or 0 to cancel)”, </p> <p> “number”, minimum=1, maximum=len(matches)) </p> <p> return matches if which != 0 else None </p> <p><p> 为尽可能快而容易地发现某个DVD,我们需要用户只输入其标题的一个或头几个字符。在具备了标题的起始字符后,我们在DBM中迭代并创建一个匹配列表。如果只有一个匹配项,就返回该项;如果有几个匹配项(但少于DISPLAY_LIMIT, 一个在程序中其他地方设置的整数),就以大小写不敏感的顺序展示所有这些匹配项,并为每一项设置一个编号,以便用户可以只输入编号就可以选择某个标题。(Console.get_integer()函数可以接受0,即便最小值大于0,以便0可以用作一个删除值。通过使用参数allow_zero=False, 可以禁止这种行为。我们不能使用Enter键,也就是说,没有什么意味着取消,因为什么也不输入意味着接受默认值。) </p> <p> def list_dvds(db): </p> <p> start =”” </p> <p> if len(db)> DISPLAY.LIMIT: </p> <p> start = Console.get_string(“List those starting with ”, “start”) </p> <p><p> print() </p> <p> for title in sorted(db, key=str.lower): </p> <p> if not start or title.Iower().startswith(start.lower()): </p> <p> director, year, duration = db<title> </p> <p><p> print(“{title} ({year}) {duration} minute{0}, by ” </p> <p> “{director}”.format(Util.s(duration),**locals())) </p> <p> 列出所有DVD (或者那些标题以某个子字符串引导)就是对DBM的所有项进行迭代。 </p> <p> Util.s()函数就是简单的s = lambda x: “” if x == 1 else “s”,因此,如果时间长度不是1分钟,就返回”s”。 </p> <p> def remove_dvd(db): </p> <p> title = find_dvd(db, “remove”) </p> <p> if title is None: </p> <p> return </p> <p> ans = Console.get_bool(“Remove {0}?”.format(title), “no”) </p> <p> if ans: </p> <p> del db<title> </p> <p><p> db.sync() </p> <p> 要移除一个DVD,首先需要找到用户要移除的DVD,并请求确认,获取后从DBM中删除该项即可。 </p> <p> 到这里,我们展示了如何使用shelve模块打开(或创建)一个DBM文件,以及如何向其中添加项、编辑项、对其项进行迭代以及移除某个项。 </p> <p> 遗憾的是,在我们的数据设计中存在一个瑕疵。发行者名称是重复的,这很容易导致不一致性,比如,发行者Danny DeVito可能被输入为”Danny De Vito”,用于 一个电影;也可以输入为“Danny deVito”,用于另一个。为解决这一问题,可以使用两个DBM文件,主DVD文件使用标题键与(年份,时间长度,发行者ID)值; 发行者文件使用发行者ID (整数)键与发行者名称值。下一节展示的SQL数据库 版程序将避免这一瑕疵,这是通过使用两个表格实现的,一个用于DVD,另一个用于发行者。 </p> <p> 12.2 SQL数据库 </p> <p> 大多数流行的SQL数据库的接口在第三方模块中是可用的,Python带有sqlite3 模块(以及SQLite 3数据库),因此,在Python中,可以直接开始数据库程序设计。SQLite是一个轻量级的SQL数据库,缺少很多诸如PostgreSQL这种数据库的功能, 但非常便于构造原型系统,并且在很多情况下也是够用的。 </p> <p> 为使后台数据库之间的切换尽可能容易,PEP 249 (Python Database API Specification v2.0)提供了称为DB-API 2.0的API规范。数据库接口应该遵循这一规范,比如sqlite3模块就遵循这一规范,但不是所有第三方模块都遵循。API规范中指定了两种主要的对象,即连接对象与游标对象。表12-1与表12-2中分别列出了这两种对象必须支持的API。在sqlite3模块中,除DB-API 2.0规范必需的之外,其连接对象与游标对象都提供了很多附加的属性与方法。 </p> <p> DVD程序的SQL版本为dvds.sql.py,该程序将发行者与DVD数据分开存储,以 避免重复,并提供一个新菜单,以供用户列出发行者。该程序使用的两个表格在图12-1 </p> </p> <p> def connect(filename): </p> <p> create= not os.path.exists(filename) </p> <p> db = sqlite3.connect(filename) </p> <p> if create: </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“CREATE TABLE directors (” </p> <p> “id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, ” </p> <p> “name TEXT UNIQUE NOT NULL)”) </p> <p> cursor.execute(“CREATE TABLE dvds (” </p> <p> “id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, ” </p> <p> “title TEXT NOT NULL, ” </p> <p> “year INTEGER NOT NULL,” </p> <p> “duration INTEGER NOT NULL, ” </p> <p> “director_id INTEGER NOT NULL, ” </p> <p> “FOREIGN KEY (director_id) REFERENCES directors)”) </p> <p> db.commit() </p> <p> return db </p> <p> sqlite3.connect()函数会返回一个数据库对象,并打开其指定的数据库文件。如果该文件不存在,就创建一个空的数据库文件。鉴于此,在调用sqlite3.connect()之前,我们要注意数据库是否是准备从头开始创建,如果是,就必须创建该程序要使用的表格。所有査询都是通过一个数据库游标完成的,可以从数据库对象的cursor()方法获取。 </p> <p> 注意,两个表格都是使用一个ID字段创建的,ID字段有一个AUTOINCREMENT 约束——这意味着SQLite会自动为ID字段赋予唯一性的数值,因此,在插入新记录时,我们可以将这些字段留给SQLite处理。 </p> <p> SQLite支持有限的数据类型——实际上就是布尔型、数值型与字符串——但使用数据’‘适配器”可以对其进行扩展,或者是扩展到预定义的数据类型(比如那些用于日期与datetimes的类型),或者是用于表示任意数据类型的自定义类型。DVD程序并不需要这一功能,如果需要,sqlite3模块的文档提供了很多详细解释。我们使用的外部键语法可能与用于其他数据库的语法不同,并且在任何情况下,只是记录我们的意图,因为SQLite不像很多其他数据库那样需要强制关系完整性,sqlite3另一点与众不同的地方在于其默认行为是支持隐式的事务处理,因此,没有提供显式的“开始事务” 方法。 </p> <p> def add_dvd(db): </p> <p> title = Console.get_string(“Title”, “title”) </p> <p> if not title: </p> <p> return </p> <p> director = Console.get_string(“Director”, “director”) </p> <p> if not director: </p> <p> return </p> <p> year = Console.get_integer(“Year”, “year”, minimum=1896, </p> <p> maximum=datetime.date.today().year) </p> <p> duration = Console.get_integer(“Duration (minutes)”, “minutes”, </p> <p> minimum=0,maximum=60*48) </p> <p> director_id = get_and_set_director(db, director) </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“INSERT INTO dvds ” </p> <p> “(title, year, duration, director_id)” </p> <p> “VALUES (?, ?, ?, ?)”, </p> <p> (title, year, duration, director_id)) </p> <p> db.commit() </p> <p> 这一函数的开始代码与dvds-dbm.py程序中的对应函数一样,但在完成数据的收集后,与原来的函数有很大的差别。用户输入的发行者可能在也可能不在directors表格中,因此,我们有一个get_and_set_director()函数,在数据库中尚无某个发行者时, 该函数就将其插入到其中,无论哪种情况都返回就绪的发行者ID,以便在需要的时候插入到dvds表。在所有数据都可用后,我们执行一条SQL INSERT语句。我们不需要指定记录ID,因为SQLite会自动为我们提供。 </p> <p> 在査询中,我们使用问号(?)作为占位符,每个?都由包含SQL语句的字符串后面的序列中的值替代。命名的占位符也可以使用,后面在编辑记录时我们将看到。尽管避免使用占位符(而只是简单地使用嵌入到其中的数据来格式化SQL字符串)也是可能的,我们建议总是使用占位符,并将数据项正确编码与转义的工作留给数据库模块来完成。使用占位符的另一个好处是可以提高安全性,因为这可以防止任意的SQL 被恶意地插入到一个査询中。 </p> <p> def get_and_set_director(db, director): </p> <p> director_id = get_director_id(db, director) </p> <p> if directorjd is not None: </p> <p> return director_id </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“lNSERT INTO directors (name) VALUES (?)”,(director,)) </p> <p> db.commit() </p> <p> return get_director_id(db, director) </p> <p> 这一函数返回给定发行者的ID,并在必要的时候插入新的发行者记录。如果某个记录入,我们首先尝试使用get_director_id()函数取回其ID。 </p> <p> def get_director_id(db, director): </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“SELECT id FROM directors WHERE name=?”,(director,)) </p> <p> fields = cursor.fetchone() </p> <p> return fields if fields is not None else None </p> <p><p> get_director_id()函数返回给定发行者的ID,如果数据库中没有指定的发行者,就返回None。我们使用fetchone()方法,因为或者有一个匹配的记录,或者没有。(我们知道,不会有重复的发行者,因为directors表格的名称字段有一个UNIQUE约束,在任何情况下,在添加一个新的发行者之前,我们总是先检査其是否存在。)这种取回方法总是返回一个字段序列(如果没有更多的记录,就返回None)。即便如此,这里我们只是请求返回一个单独的字段。 </p> <p> def edit_dvd(db): </p> <p> title, identity = find_dvd(db, “edit”) </p> <p> if title is None: </p> <p> return </p> <p> title = Console.get_string(“Title”,”title”, title) </p> <p> if not title: </p> <p> return </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“SELECT dvds.year, dvds.duration, directors.name” </p> <p> “FROM dvds, directors ” </p> <p> “WHERE dvds.director_id = directors.id AND ” </p> <p> “dvds.id=:id”, dict(id=identity)) </p> <p> year, duration, director = cursor.fetchone() </p> <p> director = Console.get_string(“Director”, “director”, director) </p> <p> if not director: </p> <p> return </p> <p> year = Console,get_integer(“Year”,”year”, year, 1896,datetime.date.today().year) </p> <p> duration = Console.get_integer(“Duration (minutes)”, “minutes”, </p> <p> duration, minimum=0, maximum=60*48) </p> <p> director_id = get_and_set_director(db, director) </p> <p> cursor.execute(“UPDATE dvds SET title=:title, year=:year,” </p> <p> “duration=:duration, director_id=:directorjd ” </p> <p> “WHERE id=:identity”, locals()) </p> <p> db.commit() </p> <p> 要编辑DVD记录,我们必须首先找到用户需要操纵的记录。如果找到了某个记录,我们就给用户修改其标题的机会,之后取回该记录的其他字段,以便将现有值作为默认值,将用户的输入工作最小化,用户只需要按Enter键就可以接受默认值。这里,我们使用了命名的占位符(形式为:name),并且必须使用映射来提供相应的值。对SELECT语句,我们使用一个新创建的字典;对UPDATE语句,我们使用的是由 locals()返回的字典。 </p> <p> 我们可以同时为这两个语句都使用新字典,这种情况下,对UPDATE语句,我们可以传递 dict(title=title, year=year, duration=duration, director_id=director_id, id=identity)),而非 locals()。 </p> <p> 在具备所有字段并且用户已经输入了需要做的改变之后,我们取回相应的发行者ID (如果必要就插入新的发行者记录),之后使用新数据对数据库进行更新。我们采用了一种简化的方法,对记录的所有字段进行更新,而不仅仅是那些做了修改的字段。 </p> <p> 在使用DBM文件时,DVD标题被用作键,因此,如果标题进行了修改,我们就需要创建一个新的键-值项,并删除原始项。不过,这里每个DVD记录都有一个唯一性的ID,该ID是记录初次插入时创建的,因此,我们只需要改变任何其他字段的值, 而不需要其他操作。 </p> <p> def find_dvd(db, message): </p> <p> message = “(Start of) title to ” + message </p> <p> cursor = db.cursor() </p> <p> while True: . </p> <p> start = Console.get_stnng(message, “title”) </p> <p> if not start: </p> <p> return (None, None) </p> <p> cursor.execute(“SELECT title, id FROM dvds ” </p> <p> “WHERE title LIKE ? ORDER BY title”, </p> <p> (start +”%”,)) </p> <p> records = cursor.fetchall() </p> <p> if len(records) == 0: </p> <p> print(“There are no dvds starting with”, start) </p> <p> continue </p> <p> elif len(records) == 1: </p> <p> return records </p> <p><p> elif len(records) > DISPLAY_LIMIT: </p> <p> print(“Too many dvds ({0}) start with {1}; try entering ” </p> <p> “more of the title”.format(len(records),start)) </p> <p> continue </p> <p> else: </p> <p> for i, record in enumerate(records): </p> <p> print(“{0}:{1}”.format(i + 1, record)) </p> <p><p> which = Console.get_integer(“Number (or 0 to cancel)”, </p> <p> “number”, minimum=1, maximum=len(records)) </p> <p> return records if which != 0 else (None, None) </p> <p><p> 这一函数的功能与dvdsdbm.py程序中的find_dvd()函数相同,并返回一个二元组 (DVD标题,DVD ID)或(None, None),具体依赖于是否找到了某个记录。这里并不需要在所有数据上进行迭代,而是使用SQL通配符(%),因此只取回相关的记录。 </p> <p> 由于我们希望匹配的记录数较小,因此我们一次性将其都取回到序列的序列中。如果有不止一个匹配的记录,但数量上又少到可以显示,我们就打印记录,并将每条记录附带一个数字编号,以便用户可以选择需要的记录,其方式与在dvds-dbm.py程序中所做的类似: </p> <p> def list_dvds(db): </p> <p> cursor = db.cursor() </p> <p> sql = (“SELECT dvds.title, dvds.year, dvds.duration, ” </p> <p> “directors.name FROM dvds, directors ” </p> <p> “WHERE dvds.director_id = directors.id”) </p> <p> start = None </p> <p> if dvd_count(db) > DISPLAY_LIMIT: </p> <p> start = Console.get_string(“List those starting with “, “start”) </p> <p><p> sql += ” AND dvds.title LIKE ?” </p> <p> sql += ” ORDER BY dvds.title” </p> <p> print() </p> <p> if start is None: </p> <p> cursor.execute(sql) </p> <p> else: </p> <p> cursor.execute(sql, (start +”%”,)) </p> <p> for record in cursor: </p> <p> print(“{0} ({0}) {0} minutes, by {0}”.format(record)) </p> <p><p> 要列出每个DVD的详细资料,我们执行一个SELECT査询。该査询连接两个表,如果记录(由dvd_count()函数返回)数量超过了显示限制值,就将第2个元素添加到WHERE 分支,之后执行该査询,并在结果上进行迭代。每个记录都是一个序列,其字段是与 SELECT査询相匹配的。 </p> <p> def dvd_count(db): </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“SELECT COUNT(*) FROM dvds”) </p> <p> return cursor.fetchone() </p> <p><p> 我们将这几行代码放置在一个单独的函数中,因为我们在几个不同的函数中都需要使用这几行代码。 </p> <p> 我们忽略了 list_directors()函数的代码,因为该函数在结构上与list_dvds()函数非常类似,只不过更简单一些,因为本函数只列出一个字段(name)。 </p> <p> def remove_dvd(db): </p> <p> title, identity = find_dvd(db, “remove”) </p> <p> if title is None: </p> <p> return </p> <p> ans = Console.get_bool(“Remove {0}?”.format(title), “no”) </p> <p> if ans: </p> <p> cursor = db.cursor() </p> <p> cursor.execute(“DELETE FROM dvds WHERE id=?”, (identity,)) </p> <p> db.commit() </p> <p> 在用户需要删除一个记录时,将调用本函数,并且本函数与dvds-dbm.py程序中 相应的函数是非常类似的。 </p> <p> 到此,我们完全查阅了 dvds-sql.py程序,并且了解了如何创建数据库表格、选取 记录、在选定的记录上进行迭代以及插入、更新与删除记录。使用execute()方法,我们可以执行底层数据库所支持的任意SQL语句。 </p> <p> SQLite提供了比我们这里使用的多得多的功能,包括自动提交模式(以及任意其他类型的事务控制),以及创建可以在SQL查询内执行的函数的能力。提供一个工厂函数并用于控制对每个取回的记录返回什么(比如,一个字典或自定义类型,而不是字段序列)也是可能的。此外,通过传递“:memory:”作为文件名,创建内存中的SQLite 数据库也是可能的。 </p> <p>sqlite数据库 视频的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于sqlite数据库 视频,SQLite数据库:轻量级存储视频的首选,后端编程Python3-数据库编程的信息别忘了在本站进行查找喔。</p> <div class='yarpp yarpp-related yarpp-related-website yarpp-template-list'> <!-- YARPP List --> <h3>相关推荐:</h3><ol> <li><a href="https://www.88531.cn/37446.html" rel="bookmark" title="绝了!上百Docker容器一键安装,NAS搭建高颜值家庭服务器操作系统『umbrelOS』">绝了!上百Docker容器一键安装,NAS搭建高颜值家庭服务器操作系统『umbrelOS』</a> <small>目录1 关于umbrelOS2 umbrelOS部署3 umbrelOS体验4 最后 […]...</small></li> <li><a href="https://www.88531.cn/36669.html" rel="bookmark" title="【亲测】android安卓三个可用的虚拟位置location定位APP软件">【亲测】android安卓三个可用的虚拟位置location定位APP软件</a> <small>目录1 第一款(无root推荐),影梭:2 第二款(无root推荐),爱思助手:3 […]...</small></li> <li><a href="https://www.88531.cn/28059.html" rel="bookmark" title="Docker安装RustDesk Server服务器搭建含api服务器和webclient服务器直接网页访问教程">Docker安装RustDesk Server服务器搭建含api服务器和webclient服务器直接网页访问教程</a> <small>RustDesk Server自建服务器 网上找的教程大部分都是 中继和转发的教程 […]...</small></li> <li><a href="https://www.88531.cn/27724.html" rel="bookmark" title="微信公众号文章批量下载2带教程">微信公众号文章批量下载2带教程</a> <small>下载地址: 此处内容已经被作者隐藏,请输入验证码查看内容验证码:点击[获取验证码连接 […]...</small></li> <li><a href="https://www.88531.cn/18516.html" rel="bookmark" title="响应式金融交易图形统计后台网站模板">响应式金融交易图形统计后台网站模板</a> <small>免费下载 HTML5模板 响应式金融交易图形统计后台网站模板(共125文件) 403 […]...</small></li> </ol> </div> <!--打赏展示--> <div id="dcontainer" style="text-align:center;font-size:1.1rem; font-weight:bold;"> <div class="donate" style="width:100%;background-color: rgba(0, 128, 0, 0.3);"><p>创作不易,用心坚持,请喝一怀爱心咖啡!继续坚持创作~~</p></div> <div class="text_p"> <img src="./wp-content/uploads/ds.png" width="500" height="200" /> </div> </div> </div> <div id="pay-single-box"></div> <div class="ripro_gg_wrap pc"><div style="color:red;">100T高转存免费网盘资源精选【持续更中~~~~】:<a href='https://link3.cc/88531cn' target="_blank">点击查看</a></div> <hr /> <a href='http://doc.88531.cn/docs/yfwqtj' target="_blank"><img class="alignnone size-full wp-image-38236" src="/wp-content/uploads/txad/2.png" alt="" width="100%" /></a></div><div class="article-footer"> <div class="author-box"> <div class="author-image"> </div> <div class="author-info"> <h4 class="author-name"> <a target="_blank" href="javascript:;">NO.1</a> <span class="label label-warning"><i class="fa fa-diamond"></i> 钻石</span> </h4> </div> </div> <div class="xshare"> <span class="xshare-title">分享到:</span> <a href="javascript:;" title="收藏文章" etap="star" data-postid="13766" class="ripro-star"><i class="fa fa-star-o"></i></a> <a href="" etap="share" data-share="qq" class="share-qq"><i class="fa fa-qq"></i></a> <a href="" etap="share" data-share="weibo" class="share-weibo"><i class="fa fa-weibo"></i></a> </div> </div> </div> </div> </article> <div class="entry-navigation"> <nav class="article-nav"> <span class="article-nav-prev">上一篇<br><a href="https://www.88531.cn/16018.html" rel="prev">高效可靠!手机删除数据库请看这篇指南 (手机怎么彻底删除数据库)</a></span> <span class="article-nav-next">下一篇<br><a href="https://www.88531.cn/11665.html" rel="next">最大排序MSSQL中轻松获取字母最大排序(mssql 获取字母)</a></span> </nav> </div> <div class="bottom-area"> <div id="comments" class="comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">发表回复 <small><a rel="nofollow" id="cancel-comment-reply-link" href="/13766.html#respond" style="display:none;">取消回复</a></small></h3><p class="must-log-in">要发表评论,您必须先<a href="https://www.88531.cn/wp-login.php?redirect_to=https%3A%2F%2Fwww.88531.cn%2F13766.html">登录</a>。</p> </div><!-- #respond --> </div> </div> </main> </div> </div> <div class="sidebar-column col-lg-3"> <aside class="widget-area"> <div id="block-5" class="widget widget_block"><div style="color:red;">100T免费网盘热门资源:<a href='https://link3.cc/88531cn' target="_blank">点击查看</a></div></div> <div id="recent-posts-3" class="widget widget_recent_entries"> <h5 class="widget-title">最近更新</h5> <ul> <li> <a href="https://www.88531.cn/46944.html">电脑最强BT种子下载:qBittorrent 5.1.3 绿色优化版</a> </li> <li> <a href="https://www.88531.cn/46949.html">又一款WINDOWS神器:Autoruns一键强力删除注册表项,启动,服务,驱动,解码等 开发者、管理员必备-微软官方出品</a> </li> <li> <a href="https://www.88531.cn/46928.html">把windows系统安装到U盘? WinToUSB这款软件搞定 系统维护工具箱</a> </li> <li> <a href="https://www.88531.cn/46931.html">安卓MacroDroid任务自动化 高级版解锁强大功能</a> </li> <li> <a href="https://www.88531.cn/46912.html">安卓迅雷-v9.6.8 修改SVIP 完美精简去更新去广告纯净版</a> </li> <li> <a href="https://www.88531.cn/46913.html">电脑最强影音播放器:РotРlayer v1.7.22691 去广告绿色版美化增强版</a> </li> <li> <a href="https://www.88531.cn/46905.html">Windows下安装Alist,并用nssm安装为系统服务自启动</a> </li> <li> <a href="https://www.88531.cn/46895.html">BTSOU磁力搜索神器,老司机LSP 直接起飞低调珍藏版</a> </li> </ul> </div><div id="linkcat-181" class="widget widget_links"><h5 class="widget-title">本站推荐</h5> <ul class='xoxo blogroll'> <li><a href="https://link3.cc/88531cn" title="最新的资源导航站" target="_blank">资源导航站</a> 最新的资源导航站</li> <li><a href="http://doc.88531.cn/docs/mrfx" title="包含:软件/APP/影视/音乐/素材/学习资料" target="_blank">100T高转存网盘资源</a> 包含:软件/APP/影视/音乐/素材/学习资料</li> <li><a href="http://app.88531.cn:48124" title="IT-TOOL工具箱" target="_blank">IT-TOOL</a> IT-TOOL工具箱</li> <li><a href="http://app.88531.cn:5080/search" title="全功能的搜索引擎-无广告" target="_blank">SearXNG</a> 全功能的搜索引擎-无广告</li> <li><a href="http://app.88531.cn:8005/?lang=zh_CN" title="PDF在线编辑工具" target="_blank">Stirling PDF</a> PDF在线编辑工具</li> <li><a href="http://app.88531.cn:3006" target="_blank">MoonTV在线免费观影</a></li> </ul> </div> </aside> </div> </div> </div> </div><!-- end sitecoent --> <footer class="site-footer"> <div class="container"> <div class="footer-widget"> <div class="row"> <div class="col-xs-12 col-sm-6 col-md-3 widget--about"> <div class="widget--content"> <div class="footer--logo mb-20"> <img class="tap-logo" src="https://www.88531.cn/wp-content/uploads/2024/08/diugai.com171276885347379-1.png" data-dark="https://www.88531.cn/wp-content/uploads/2024/08/diugai.com171276885347379-1.png" alt="资享网"> </div> <p class="mb-10">www.88531.cn资享网,为你提供最优质的资源</p> </div> </div> <!-- .col-md-2 end --> <div class="col-xs-12 col-sm-3 col-md-2 col-md-offset-1 widget--links"> <div class="widget--title"> <h5>本站导航</h5> </div> <div class="widget--content"> <ul class="list-unstyled mb-0"> </ul> </div> </div> <!-- .col-md-2 end --> <div class="col-xs-12 col-sm-3 col-md-2 widget--links"> <div class="widget--title"> <h5>友情链接</h5> </div> <div class="widget--content"> <ul class="list-unstyled mb-0"> </ul> </div> </div> <!-- .col-md-2 end --> <div class="col-xs-12 col-sm-12 col-md-4 widget--newsletter"> <div class="widget--title"> <h5>快速搜索</h5> </div> <div class="widget--content"> <form class="newsletter--form mb-30" action="https://www.88531.cn/" method="get"> <input type="text" class="form-control" name="s" placeholder="关键词"> <button type="submit"><i class="fa fa-arrow-right"></i></button> </form> <h6>商务合作QQ:3970260761<br> 公众号:软师兄<br> 默认解压密码:12345</h6> </div> </div> </div> </div> <div class="footer-links"> <h6>友情链接:</h6> <ul class="friendlinks-ul"> <li><a target="_blank" href="https://www.123pan.com/s/MhYbVv-8oTJv.html" title="常用工具 " target="_blank">常用工具 </a></li><li><a target="_blank" href="http://doc.88531.cn" title="文档教程" target="_blank">文档教程</a></li><li><a target="_blank" href="https://bt.88531.cn" title="宝塔开心版" target="_blank">宝塔开心版</a></li><li><a target="_blank" href="https://www.88531.cn/38546.html" title="小雅一键" target="_blank">小雅一键</a></li><li><a target="_blank" href="https://link3.cc/88531cn" title="资源导航站" target="_blank">资源导航站</a></li><li><a target="_blank" href="http://doc.88531.cn/docs/mrfx" title="100T高转存网盘资源" target="_blank">100T高转存网盘资源</a></li><li><a target="_blank" href="https://doc.88531.cn/docs/mrfx/mrfx-1gamrv9phanpv" title="黑科技工具箱" target="_blank">黑科技工具箱</a></li><li><a target="_blank" href="https://pan.88531.cn" title="网盘拉新连接生成" target="_blank">网盘拉新连接生成</a></li><li><a target="_blank" href="http://app.88531.cn:48124" title="IT-TOOL" target="_blank">IT-TOOL</a></li><li><a target="_blank" href="http://app.88531.cn:5080/search" title="SearXNG" target="_blank">SearXNG</a></li><li><a target="_blank" href="http://app.88531.cn:8005/?lang=zh_CN" title="Stirling PDF" target="_blank">Stirling PDF</a></li><li><a target="_blank" href="http://app.88531.cn:3006" title="MoonTV在线免费观影" target="_blank">MoonTV在线免费观影</a></li> </ul> </div> <div class="site-info"> © 2025Theme by - 88531资享网 <a href="https://beian.miit.gov.cn" target="_blank" class="text" rel="noreferrer nofollow"> 陕ICP备2023008366号-4</a> <br> </div> </div> </footer> <div class="rollbar"> <div class="rollbar-item tap-dark" etap="tap-dark" title="夜间模式"><i class="mdi mdi-brightness-4"></i></div> <div class="rollbar-item tap-click-qiandao"><a class="click-qiandao" title="签到" href="javascript:;"><i class="fa fa-calendar-check-o"></i></a></div> <div class="rollbar-item tap-pencil"><a target="_blank" title="投稿赚钱" href="https://www.88531.cn/wp-admin/post-new.php"><i class="fa fa-pencil"></i></a></div> <div class="rollbar-item tap-qq" etap="tap-qq"><a target="_blank" title="QQ咨询" href="http://wpa.qq.com/msgrd?v=3&uin=3970260761&site=qq&menu=yes"><i class="fa fa-qq"></i></a></div> <div class="rollbar-item tap-blog-style" etap="tap-blog-style" data-id="1" title="博客模式"><i class="fa fa-list"></i></div> <div class="rollbar-item" etap="to_full" title="全屏页面"><i class="fa fa-arrows-alt"></i></div> <div class="rollbar-item" etap="to_top" title="返回顶部"><i class="fa fa-angle-up"></i></div> </div> <div class="dimmer"></div> <div id="popup-signup" class="popup-signup fade" style="display: none;"> <div class="register-login-modal" role="document"> <div class="modal-content"> <div class="modal-body"> <img class="popup-logo" src="https://www.88531.cn/wp-content/uploads/2024/08/diugai.com171276885347379-1.png" data-dark="https://www.88531.cn/wp-content/uploads/2024/08/diugai.com171276885347379-1.png" alt="资享网"> <!-- Nav tabs --> <ul class="nav nav-tabs"> <li class="active"><a href="#login" data-toggle="login">登录</a> </li> <li><a href="#signup" data-toggle="signup">注册</a> </li> </ul> <!-- Tab panes --> <div class="tab-content"> <div class="tab-pane fade in active" id="login"> <div class="signup-form-container text-center"> <form class="mb-0"> <div class="form-group"> <input type="text" class="form-control" name="username" placeholder="*用户名或邮箱"> </div> <div class="form-group"> <input type="password" class="form-control" name="password" placeholder="*密码"> </div> <button type="button" class="go-login btn btn--primary btn--block"><i class="fa fa-bullseye"></i> 安全登录</button> <!-- <a href="#" class="forget-password">忘记密码?</a> --> </form> <!-- form end --> </div> <!-- .signup-form end --> </div> <div class="tab-pane fade in" id="signup"> <form class="mb-0"> <div class="form-group"> <input type="text" class="form-control" name="user_name" placeholder="输入英文用户名"> </div> <!-- .form-group end --> <div class="form-group"> <input type="email" class="form-control" name="user_email" placeholder="绑定邮箱"> </div> <!-- .form-group end --> <div class="form-group"> <input type="password" class="form-control" name="user_pass" placeholder="密码最小长度为6"> </div> <div class="form-group"> <input type="password" class="form-control" name="user_pass2" placeholder="再次输入密码"> </div> <div class="form-group"> <div class="input-group"> <input type="text" class="form-control" name="captcha" placeholder="邮箱验证码"> <span class="input-group-btn"> <button class="go-captcha_email btn btn--secondary" type="button">发送验证码</button> </span> </div> </div> <button type="button" class="go-register btn btn--primary btn--block"><i class="fa fa-bullseye"></i> 立即注册</button> </form> <!-- form end --> </div> </div> <a target="_blank" href="https://www.88531.cn/wp-login.php?action=lostpassword" class="rest-password">忘记密码?</a> </div> <!-- /.modal-content --> </div> <!-- /.modal-dialog --> </div> <!-- /.modal --> </div> <div class="off-canvas"> <div class="canvas-close"><i class="mdi mdi-close"></i></div> <div class="logo-wrapper"> <a href="https://www.88531.cn/"> <img class="logo regular" src="https://www.88531.cn/wp-content/uploads/2024/08/diugai.com171276885347379-1.png" alt="资享网"> </a> </div> <div class="mobile-menu hidden-lg hidden-xl"></div> <aside class="widget-area"> </aside> </div> <script> console.log("SQL 请求数:97"); console.log("页面生成耗时: 0.94497"); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?225297bceab00c11f86be5cf7eefe4ca"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/ripro9.0\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script>window._ERPHPDOWN = {"uri":"https://www.88531.cn/wp-content/plugins/erphpdown", "payment": "1", "wppay": "link", "tuan":"", "author": "mobantu"}</script> <link rel='stylesheet' id='yarppRelatedCss-css' href='https://www.88531.cn/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?ver=5.30.11' type='text/css' media='all' /> <link rel='stylesheet' id='buttons-css' href='https://www.88531.cn/wp-includes/css/buttons.min.css?ver=6.8.1' type='text/css' media='all' /> <script type="text/javascript" id="toc-front-js-extra"> /* <![CDATA[ */ var tocplus = {"visibility_show":"show","visibility_hide":"hide","visibility_hide_by_default":"1","width":"Auto"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-content/plugins/table-of-contents-plus/front.min.js?ver=2411.1" id="toc-front-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-content/themes/ripro9.0/assets/js/plugins.js?ver=9.0(8.9新版修复解密增强版)" id="plugins-js"></script> <script type="text/javascript" id="app-js-extra"> /* <![CDATA[ */ var caozhuti = {"site_name":"\u8d44\u4eab\u7f51","home_url":"https:\/\/www.88531.cn","ajaxurl":"https:\/\/www.88531.cn\/wp-admin\/admin-ajax.php","is_singular":"1","tencent_captcha":{"is":"0","appid":""},"infinite_load":"\u52a0\u8f7d\u66f4\u591a","infinite_loading":"<i class=\"fa fa-spinner fa-spin\"><\/i> \u52a0\u8f7d\u4e2d...","site_notice":{"is":"0","color":"rgb(33, 150, 243)","html":"<div class=\"notify-content\"><h3>\u6b22\u8fce\u6765\u5230\u8d44\u4eab\u7f51<\/h3><div>\u6211\u4eec\u4e3a\u4f60\u5206\u4eab\u6280\u672f\u548c\u8d44\u6e90<\/div><\/div>"},"pay_type_html":{"html":"<div class=\"pay-button-box\"><div class=\"pay-item\" id=\"alipay\" data-type=\"1\"><i class=\"alipay\"><\/i><span>\u652f\u4ed8\u5b9d<\/span><\/div><div class=\"pay-item\" id=\"weixinpay\" data-type=\"2\"><i class=\"weixinpay\"><\/i><span>\u5fae\u4fe1\u652f\u4ed8<\/span><\/div><\/div><p style=\"font-size: 13px; padding: 0; margin: 0;\">\u5f53\u524d\u4e3a\u6e38\u5ba2\u8d2d\u4e70\u6a21\u5f0f<\/p>","alipay":1,"weixinpay":2}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-content/themes/ripro9.0/assets/js/app.js?ver=9.0(8.9新版修复解密增强版)" id="app-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-content/themes/ripro9.0/assets/js/plugins/jquery.fancybox.min.js?ver=9.0(8.9新版修复解密增强版)" id="fancybox-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/comment-reply.min.js?ver=6.8.1" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script type="text/javascript" id="q2w3_fixed_widget-js-extra"> /* <![CDATA[ */ var q2w3_sidebar_options = [{"sidebar":"q2w3-default-sidebar","use_sticky_position":false,"margin_top":0,"margin_bottom":0,"stop_elements_selectors":"","screen_max_width":10,"screen_max_height":50,"widgets":["\u3002\u5361"]}]; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-content/plugins/q2w3-fixed-widget/js/frontend.min.js?ver=6.2.3" id="q2w3_fixed_widget-js"></script> <script type="text/javascript" id="erphpdown-js-extra"> /* <![CDATA[ */ var _ERPHP = {"ajaxurl":"https:\/\/www.88531.cn\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-content/plugins/erphpdown/static/erphpdown.js?ver=17.1" id="erphpdown-js"></script> <script type="text/javascript" id="utils-js-extra"> /* <![CDATA[ */ var userSettings = {"url":"\/","uid":"0","time":"1762962431","secure":"1"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/utils.min.js?ver=6.8.1" id="utils-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-admin/js/editor.min.js?ver=6.8.1" id="editor-js"></script> <script type="text/javascript" id="editor-js-after"> /* <![CDATA[ */ window.wp.oldEditor = window.wp.editor; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/hoverIntent.min.js?ver=1.10.2" id="hoverIntent-js"></script> <script type="text/javascript" id="common-js-extra"> /* <![CDATA[ */ var bulkActionObserverIds = {"bulk_action":"action","changeit":"new_role"}; /* ]]> */ </script> <script type="text/javascript" id="common-js-translations"> /* <![CDATA[ */ ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", {"translation-revision-date":"2025-05-04 17:30:55+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_CN"},"Screen Options updated.":["\u5c4f\u5e55\u9009\u9879\u5df2\u66f4\u65b0\u3002"],"%1$s is deprecated since version %2$s with no alternative available.":["%1$s \u81ea %2$s \u7248\u672c\u5f00\u59cb\u5df2\u5f03\u7528\uff0c\u6ca1\u6709\u66ff\u4ee3\u65b9\u6848\u3002"],"%1$s is deprecated since version %2$s! Use %3$s instead.":["%1$s \u81ea\u7248\u672c %2$s \u8d77\u5df2\u5f03\u7528\uff01\u8bf7\u6539\u7528 %3$s\u3002"],"Please select at least one item to perform this action on.":["\u8bf7\u4e3a\u6b64\u64cd\u4f5c\u9009\u62e9\u81f3\u5c11\u4e00\u4e2a\u9879\u76ee\u3002"],"Expand Main menu":["\u5c55\u5f00\u4e3b\u83dc\u5355"],"Dismiss this notice.":["\u5ffd\u7565\u6b64\u901a\u77e5\u3002"],"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n'Cancel' to stop, 'OK' to delete.":["\u60a8\u5373\u5c06\u4ece\u60a8\u7684\u7ad9\u70b9\u6c38\u4e45\u5220\u9664\u8fd9\u4e9b\u9879\u76ee\u3002\n\u6b64\u64cd\u4f5c\u65e0\u6cd5\u64a4\u6d88\u3002\n\u6309\u300c\u53d6\u6d88\u300d\u53ef\u53d6\u6d88\uff0c\u6309\u300c\u786e\u5b9a\u300d\u53ef\u786e\u8ba4\u5220\u9664\u3002"],"Collapse Main menu":["\u6298\u53e0\u4e3b\u83dc\u5355"]}},"comment":{"reference":"wp-admin\/js\/common.js"}} ); /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-admin/js/common.min.js?ver=6.8.1" id="common-js"></script> <script type="text/javascript" id="wplink-js-extra"> /* <![CDATA[ */ var wpLinkL10n = {"title":"\u63d2\u5165\u6216\u7f16\u8f91\u94fe\u63a5","update":"\u66f4\u65b0","save":"\u6dfb\u52a0\u94fe\u63a5","noTitle":"\uff08\u65e0\u6807\u9898\uff09","noMatchesFound":"\u672a\u627e\u5230\u7ed3\u679c\u3002","linkSelected":"\u94fe\u63a5\u5df2\u9009\u62e9\u3002","linkInserted":"\u94fe\u63a5\u5df2\u63d2\u5165\u3002","minInputLength":"3"}; /* ]]> */ </script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/wplink.min.js?ver=6.8.1" id="wplink-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/jquery/ui/menu.min.js?ver=1.13.3" id="jquery-ui-menu-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/jquery/ui/autocomplete.min.js?ver=1.13.3" id="jquery-ui-autocomplete-js"></script> <script type="text/javascript"> tinyMCEPreInit = { baseURL: "https://www.88531.cn/wp-includes/js/tinymce", suffix: ".min", mceInit: {'comment':{theme:"modern",skin:"lightgray",language:"zh",formats:{alignleft: [{selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", styles: {textAlign:"left"}},{selector: "img,table,dl.wp-caption", classes: "alignleft"}],aligncenter: [{selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", styles: {textAlign:"center"}},{selector: "img,table,dl.wp-caption", classes: "aligncenter"}],alignright: [{selector: "p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li", styles: {textAlign:"right"}},{selector: "img,table,dl.wp-caption", classes: "alignright"}],strikethrough: {inline: "del"}},relative_urls:false,remove_script_host:false,convert_urls:false,browser_spellcheck:true,fix_list_elements:true,entities:"38,amp,60,lt,62,gt",entity_encoding:"raw",keep_styles:false,cache_suffix:"wp-mce-49110-20201110",resize:"vertical",menubar:false,branding:false,preview_styles:"font-family font-size font-weight font-style text-decoration text-transform",end_container_on_empty_block:true,wpeditimage_html5_captions:true,wp_lang_attr:"zh-Hans",wp_shortcut_labels:{"Heading 1":"access1","Heading 2":"access2","Heading 3":"access3","Heading 4":"access4","Heading 5":"access5","Heading 6":"access6","Paragraph":"access7","Blockquote":"accessQ","Underline":"metaU","Strikethrough":"accessD","Bold":"metaB","Italic":"metaI","Code":"accessX","Align center":"accessC","Align right":"accessR","Align left":"accessL","Justify":"accessJ","Cut":"metaX","Copy":"metaC","Paste":"metaV","Select all":"metaA","Undo":"metaZ","Redo":"metaY","Bullet list":"accessU","Numbered list":"accessO","Insert\/edit image":"accessM","Insert\/edit link":"metaK","Remove link":"accessS","Toolbar Toggle":"accessZ","Insert Read More tag":"accessT","Insert Page Break tag":"accessP","Distraction-free writing mode":"accessW","Add Media":"accessM","Keyboard Shortcuts":"accessH"},content_css:"https://www.88531.cn/wp-includes/css/dashicons.min.css?ver=6.8.1,https://www.88531.cn/wp-includes/js/tinymce/skins/wordpress/wp-content.css?ver=6.8.1",plugins:"charmap,colorpicker,hr,lists,media,paste,tabfocus,textcolor,fullscreen,wordpress,wpautoresize,wpeditimage,wpemoji,wpgallery,wplink,wpdialogs,wptextpattern,wpview,image",external_plugins:{"InsertInvitationCode":"https:\/\/www.88531.cn\/wp-content\/plugins\/ashuwp-invitaion-code\/tinymce\/\/js\/plugin.js","urvanov_syntax_highlighter_tinymce":"https:\/\/www.88531.cn\/wp-content\/plugins\/urvanov-syntax-highlighter\/util\/tag-editor\/urvanov_syntax_highlighter_tinymce.js"},selector:"#comment",wpautop:true,indent:false,toolbar1:"formatselect,bold,italic,bullist,numlist,blockquote,alignleft,aligncenter,alignright,link,wp_more,wp_page,spellchecker,fullscreen,wp_adv,InsertInvitationCode,separator,urvanov_syntax_highlighter_tinymce",toolbar2:"strikethrough,hr,forecolor,pastetext,removeformat,charmap,outdent,indent,undo,redo,wp_help",toolbar3:"fontselect,styleselect,underline,strikethrough,cleanup,fontsizeselect,backcolor,spellchecker",toolbar4:"",tabfocus_elements:":prev,:next",body_class:"comment post-type-post post-status-publish post-format-standard page-template-default locale-zh-cn",extended_valid_elements:",pre[*],code[*],iframe[*]"}}, qtInit: {'comment':{id:"comment",buttons:"strong,em,link,block,del,ins,img,ul,ol,li,code,more,close"}}, ref: {plugins:"charmap,colorpicker,hr,lists,media,paste,tabfocus,textcolor,fullscreen,wordpress,wpautoresize,wpeditimage,wpemoji,wpgallery,wplink,wpdialogs,wptextpattern,wpview,image",theme:"modern",language:"zh"}, load_ext: function(url,lang){var sl=tinymce.ScriptLoader;sl.markDone(url+'/langs/'+lang+'.js');sl.markDone(url+'/langs/'+lang+'_dlg.js');} }; </script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/tinymce/tinymce.min.js?ver=49110-20201110" id="wp-tinymce-root-js"></script> <script type="text/javascript" src="https://www.88531.cn/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js?ver=49110-20201110" id="wp-tinymce-js"></script> <script type='text/javascript'> tinymce.addI18n( 'zh', {"New document":"\u65b0\u6587\u6863","Formats":"\u683c\u5f0f","Headings":"\u6807\u9898","Heading 1":"\u4e00\u7ea7\u6807\u9898","Heading 2":"\u4e8c\u7ea7\u6807\u9898","Heading 3":"\u4e09\u7ea7\u6807\u9898","Heading 4":"\u56db\u7ea7\u6807\u9898","Heading 5":"\u4e94\u7ea7\u6807\u9898","Heading 6":"\u516d\u7ea7\u6807\u9898","Blocks":"\u5757","Paragraph":"\u6bb5\u843d","Blockquote":"\u6bb5\u843d\u5f15\u7528","Preformatted":"\u9884\u683c\u5f0f\u5316","Address":"\u5730\u5740","Inline":"\u884c\u5185","Underline":"\u4e0b\u5212\u7ebf","Strikethrough":"\u5220\u9664\u7ebf","Subscript":"\u4e0b\u6807","Superscript":"\u4e0a\u6807","Clear formatting":"\u6e05\u9664\u683c\u5f0f","Bold":"\u7c97\u4f53","Italic":"\u659c\u4f53","Code":"\u4ee3\u7801","Source code":"\u6e90\u4ee3\u7801","Font Family":"\u5b57\u4f53","Font Sizes":"\u5b57\u53f7","Align center":"\u5c45\u4e2d\u5bf9\u9f50","Align right":"\u53f3\u5bf9\u9f50","Align left":"\u5de6\u5bf9\u9f50","Justify":"\u4e24\u7aef\u5bf9\u9f50","Increase indent":"\u589e\u52a0\u7f29\u8fdb\u91cf","Decrease indent":"\u51cf\u5c11\u7f29\u8fdb\u91cf","Cut":"\u526a\u5207","Copy":"\u590d\u5236","Paste":"\u7c98\u5e16","Select all":"\u5168\u9009","Undo":"\u64a4\u9500","Redo":"\u91cd\u505a","Ok":"\u786e\u5b9a","Cancel":"\u53d6\u6d88","Close":"\u5173\u95ed","Visual aids":"\u89c6\u89c9\u8f85\u52a9","Bullet list":"\u9879\u76ee\u7b26\u53f7\u5217\u8868","Numbered list":"\u7f16\u53f7\u5217\u8868","Square":"\u5b9e\u5fc3\u65b9\u5757","Default":"\u9ed8\u8ba4","Circle":"\u5706\u5708","Disc":"\u5706\u70b9","Lower Greek":"\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd","Lower Alpha":"\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd","Upper Alpha":"\u5927\u5199\u82f1\u6587\u5b57\u6bcd","Upper Roman":"\u5927\u5199\u7f57\u9a6c\u6570\u5b57","Lower Roman":"\u5c0f\u5199\u7f57\u9a6c\u6570\u5b57","Name":"\u540d\u79f0","Anchor":"\u951a","Anchors":"\u951a","Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.":"Id \u5e94\u4ee5\u5b57\u4f53\u5f00\u5934\uff0c\u540e\u9762\u53ef\u4ee5\u662f\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u77ed\u6a2a\u7ebf\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002","Document properties":"\u6587\u6863\u5c5e\u6027","Robots":"\u673a\u5668\u4eba","Title":"\u6807\u9898","Keywords":"\u5173\u952e\u5b57","Encoding":"\u7f16\u7801","Description":"\u63cf\u8ff0","Author":"\u4f5c\u8005","Image":"\u56fe\u7247","Insert\/edit image":"\u63d2\u5165\u6216\u7f16\u8f91\u56fe\u7247","General":"\u5e38\u89c4","Advanced":"\u9ad8\u7ea7","Source":"\u6e90","Border":"\u8fb9\u6846","Constrain proportions":"\u4fdd\u6301\u957f\u5bbd\u6bd4","Vertical space":"\u5782\u76f4\u95f4\u9694","Image description":"\u56fe\u7247\u8bf4\u660e","Style":"\u6837\u5f0f","Dimensions":"\u5c3a\u5bf8","Insert image":"\u63d2\u5165\u56fe\u7247","Date\/time":"\u65e5\u671f \/ \u65f6\u95f4","Insert date\/time":"\u63d2\u5165\u65e5\u671f\u3001\u65f6\u95f4","Table of Contents":"\u76ee\u5f55","Insert\/Edit code sample":"\u63d2\u5165 \/ \u7f16\u8f91\u4ee3\u7801\u7247\u6bb5","Language":"\u8bed\u8a00","Media":"\u5a92\u4f53","Insert\/edit media":"\u63d2\u5165 \/ \u7f16\u8f91\u5a92\u4f53","Poster":"\u6d77\u62a5","Alternative source":"\u5907\u7528\u6e90","Paste your embed code below:":"\u8bf7\u5c06\u5d4c\u5165\u4ee3\u7801\u8d34\u5165\u4e0b\u65b9\uff1a","Insert video":"\u63d2\u5165\u89c6\u9891","Embed":"\u5d4c\u5165","Special character":"\u7279\u6b8a\u5b57\u7b26","Right to left":"\u4ece\u53f3\u5230\u5de6","Left to right":"\u4ece\u5de6\u5230\u53f3","Emoticons":"\u8868\u60c5\u7b26\u53f7","Nonbreaking space":"\u4e0d\u95f4\u65ad\u7a7a\u683c","Page break":"\u5206\u9875\u7b26","Paste as text":"\u7c98\u8d34\u4e3a\u6587\u672c","Preview":"\u9884\u89c8","Print":"\u6253\u5370","Save":"\u4fdd\u5b58","Fullscreen":"\u5168\u5c4f","Horizontal line":"\u6c34\u5e73\u7ebf","Horizontal space":"\u6c34\u5e73\u95f4\u9694","Restore last draft":"\u6062\u590d\u4e0a\u4e00\u8349\u7a3f","Insert\/edit link":"\u63d2\u5165\u6216\u7f16\u8f91\u94fe\u63a5","Remove link":"\u79fb\u9664\u94fe\u63a5","Link":"\u94fe\u63a5","Insert link":"\u63d2\u5165\u94fe\u63a5","Target":"\u6253\u5f00\u65b9\u5f0f","New window":"\u65b0\u7a97\u53e3","Text to display":"\u663e\u793a\u6587\u672c","Url":"\u7f51\u5740","The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?":"\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u90ae\u7bb1\u5730\u5740\uff0c\u662f\u5426\u8981\u6dfb\u52a0\u6240\u9700\u7684 mailto: \u524d\u7f00\uff1f","The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?":"\u60a8\u8f93\u5165\u7684\u94fe\u63a5\u4f3c\u4e4e\u662f\u4e2a\u5916\u90e8\u5730\u5740\uff0c\u60a8\u8981\u81ea\u52a8\u52a0\u4e0a http:\/\/ \u200b\u524d\u7f00\u5417\uff1f","Color":"\u989c\u8272","Custom color":"\u81ea\u5b9a\u4e49\u989c\u8272","Custom...":"\u81ea\u5b9a\u4e49\u2026","No color":"\u65e0\u989c\u8272","Could not find the specified string.":"\u65e0\u6cd5\u627e\u5230\u6307\u5b9a\u7684\u5b57\u7b26\u4e32\u3002","Replace":"\u66ff\u6362","Next":"\u4e0b\u4e00\u4e2a","Prev":"\u4e0a\u4e00\u4e2a","Whole words":"\u5339\u914d\u6574\u8bcd","Find and replace":"\u67e5\u627e\u548c\u66ff\u6362","Replace with":"\u66ff\u6362\u4e3a","Find":"\u67e5\u627e","Replace all":"\u5168\u90e8\u66ff\u6362","Match case":"\u5339\u914d\u5927\u5c0f\u5199","Spellcheck":"\u62fc\u5199\u68c0\u67e5","Finish":"\u5b8c\u6210","Ignore all":"\u5168\u90e8\u5ffd\u7565","Ignore":"\u5ffd\u7565","Add to Dictionary":"\u6dfb\u52a0\u81f3\u8bcd\u5178","Insert table":"\u63d2\u5165\u8868\u683c","Delete table":"\u5220\u9664\u8868\u683c","Table properties":"\u8868\u683c\u5c5e\u6027","Row properties":"\u8868\u683c\u884c\u5c5e\u6027","Cell properties":"\u5355\u5143\u683c\u5c5e\u6027","Border color":"\u8fb9\u6846\u989c\u8272","Row":"\u884c\u5217","Rows":"\u884c","Column":"\u5206\u680f","Cols":"\u680f\u76ee","Cell":"\u5355\u5143\u683c","Header cell":"\u8868\u5934\u5355\u5143\u683c","Header":"\u8868\u5934","Body":"\u4e3b\u4f53","Footer":"\u6ce8\u811a","Insert row before":"\u5728\u4e0a\u65b9\u63d2\u5165\u884c","Insert row after":"\u5728\u4e0b\u65b9\u63d2\u5165\u884c","Insert column before":"\u5728\u524d\u65b9\u63d2\u5165\u5217","Insert column after":"\u5728\u540e\u65b9\u63d2\u5165\u5217","Paste row before":"\u5728\u4e0a\u65b9\u7c98\u8d34\u8868\u683c\u884c","Paste row after":"\u5728\u4e0b\u65b9\u7c98\u8d34\u8868\u683c\u884c","Delete row":"\u5220\u9664\u884c","Delete column":"\u5220\u9664\u5217","Cut row":"\u526a\u5207\u8be5\u884c","Copy row":"\u590d\u5236\u8be5\u884c","Merge cells":"\u5408\u5e76\u5355\u5143\u683c","Split cell":"\u62c6\u5206\u5355\u5143\u683c","Height":"\u9ad8\u5ea6","Width":"\u5bbd\u5ea6","Caption":"\u8bf4\u660e\u6587\u5b57","Alignment":"\u5bf9\u9f50\u65b9\u5f0f","H Align":"\u6a2a\u5411\u5bf9\u9f50","Left":"\u5de6","Center":"\u4e2d","Right":"\u53f3","None":"\u65e0","V Align":"\u7eb5\u5411\u5bf9\u9f50","Top":"\u9876\u90e8","Middle":"\u4e2d\u90e8","Bottom":"\u5e95\u90e8","Row group":"\u884c\u7ec4","Column group":"\u680f\u76ee\u7ec4\u5408","Row type":"\u884c\u7c7b\u578b","Cell type":"\u5355\u5143\u683c\u7c7b\u578b","Cell padding":"\u5355\u5143\u683c\u5185\u8fb9\u8ddd","Cell spacing":"\u5355\u5143\u683c\u95f4\u8ddd","Scope":"\u8303\u56f4","Insert template":"\u63d2\u5165\u6a21\u677f","Templates":"\u6a21\u677f","Background color":"\u80cc\u666f\u989c\u8272","Text color":"\u6587\u5b57\u989c\u8272","Show blocks":"\u663e\u793a\u5757","Show invisible characters":"\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26","Words: {0}":"\u8bcd\u6570\uff1a{0}","Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.":"\u5f53\u524d\u5904\u4e8e\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u7c98\u8d34\u7684\u5185\u5bb9\u5c06\u88ab\u89c6\u4f5c\u7eaf\u6587\u672c\u3002\n\n\u5982\u679c\u60a8\u60f3\u4ece Microsoft Word \u7c98\u8d34\u5185\u5bb9\u5e76\u4fdd\u6301\u539f\u6837\uff0c\u8bf7\u5c1d\u8bd5\u5173\u95ed\u6b64\u9009\u9879\uff0c\u5426\u5219\u7f16\u8f91\u5668\u5c06\u81ea\u52a8\u6e05\u7406\u4ece Word \u7c98\u8d34\u7684\u6587\u672c\u3002","Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help":"\u5bcc\u6587\u672c\u533a\u57df\u3002\u6309 Alt-Shift-H \u83b7\u53d6\u5e2e\u52a9\u3002","Rich Text Area. Press Control-Option-H for help.":"\u5bcc\u6587\u672c\u533a\u57df\u3002\u6309 Control-Option-H \u83b7\u53d6\u5e2e\u52a9\u3002","You have unsaved changes are you sure you want to navigate away?":"\u79bb\u5f00\u8fd9\u4e2a\u9875\u9762\uff0c\u60a8\u6240\u505a\u7684\u66f4\u6539\u5c06\u4e22\u5931\u3002","Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.":"\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u76f4\u63a5\u8bbf\u95ee\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528\u952e\u76d8\u5feb\u6377\u952e\u6216\u6d4f\u89c8\u5668\u7684\u7f16\u8f91\u83dc\u5355\u3002","Insert":"\u63d2\u5165","File":"\u6587\u4ef6","Edit":"\u7f16\u8f91","Tools":"\u5de5\u5177","View":"\u67e5\u770b","Table":"\u8868\u683c","Format":"\u683c\u5f0f","Toolbar Toggle":"\u663e\u793a \/ \u9690\u85cf\u5de5\u5177\u680f","Insert Read More tag":"\u63d2\u5165\u300cMore\u300d\u6807\u7b7e","Insert Page Break tag":"\u63d2\u5165\u5206\u9875\u6807\u7b7e","Read more...":"\u9605\u8bfb\u66f4\u591a\u2026","Distraction-free writing mode":"\u4e13\u6ce8\u5199\u4f5c\u6a21\u5f0f","No alignment":"\u65e0\u5bf9\u9f50","Remove":"\u79fb\u9664","Edit|button":"\u7f16\u8f91","Paste URL or type to search":"\u7c98\u8d34 URL \u6216\u952e\u5165\u6765\u641c\u7d22","Apply":"\u5e94\u7528","Link options":"\u94fe\u63a5\u9009\u9879","Visual":"\u53ef\u89c6\u5316","Code|tab":"\u4ee3\u7801","Add Media":"\u6dfb\u52a0\u5a92\u4f53","Keyboard Shortcuts":"\u952e\u76d8\u5feb\u6377\u952e","Classic Block Keyboard Shortcuts":"\u4f20\u7edf\u533a\u5757\u952e\u76d8\u5feb\u6377\u952e","Default shortcuts,":"\u9ed8\u8ba4\u5feb\u6377\u65b9\u5f0f\uff0c","Additional shortcuts,":"\u989d\u5916\u7684\u5feb\u6377\u65b9\u5f0f\uff0c","Focus shortcuts:":"\u7126\u70b9\u5feb\u6377\u65b9\u5f0f\uff1a","Inline toolbar (when an image, link or preview is selected)":"\u5185\u8054\u5de5\u5177\u680f\uff08\u5f53\u56fe\u7247\u3001\u94fe\u63a5\u6216\u9884\u89c8\u88ab\u9009\u4e2d\u65f6\uff09","Editor menu (when enabled)":"\u7f16\u8f91\u83dc\u5355\uff08\u5982\u88ab\u542f\u7528\uff09","Editor toolbar":"\u7f16\u8f91\u5de5\u5177\u680f","Elements path":"\u5143\u7d20\u8def\u5f84","Ctrl + Alt + letter:":"Ctrl+Alt+ \u5b57\u6bcd\uff1a","Shift + Alt + letter:":"Shift+Alt+ \u5b57\u6bcd\uff1a","Cmd + letter:":"Cmd+ \u5b57\u6bcd\uff1a","Ctrl + letter:":"Ctrl+ \u5b57\u6bcd\uff1a","Letter":"\u5b57\u6bcd","Action":"\u64cd\u4f5c","Warning: the link has been inserted but may have errors. Please test it.":"\u8b66\u544a\uff1a\u6b64\u94fe\u63a5\u5df2\u88ab\u63d2\u5165\u4f46\u53ef\u80fd\u542b\u6709\u9519\u8bef\uff0c\u8bf7\u6d4b\u8bd5\u3002","To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.":"\u8981\u79fb\u52a8\u7126\u70b9\u5230\u5176\u4ed6\u6309\u94ae\uff0c\u8bf7\u4f7f\u7528 Tab \u6216\u7bad\u5934\u952e\uff1b\u8981\u5c06\u7126\u70b9\u79fb\u56de\u7f16\u8f91\u5668\uff0c\u8bf7\u6309 Esc \u6216\u4f7f\u7528\u4efb\u610f\u4e00\u4e2a\u6309\u94ae\u3002","When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.":"\u5f53\u4f7f\u7528\u8fd9\u4e9b\u683c\u5f0f\u5feb\u6377\u952e\u540e\u8ddf\u7a7a\u683c\u6765\u521b\u5efa\u65b0\u6bb5\u843d\u65f6\uff0c\u8fd9\u4e9b\u683c\u5f0f\u4f1a\u88ab\u81ea\u52a8\u5e94\u7528\u3002\u6309\u9000\u683c\u6216\u9000\u51fa\u952e\u6765\u64a4\u9500\u3002","The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.":"\u4ee5\u4e0b\u683c\u5f0f\u6377\u5f84\u5728\u6309\u56de\u8f66\u952e\u65f6\u88ab\u66ff\u6362\u3002\u8bf7\u6309\u9000\u51fa\u6216\u64a4\u9500\u952e\u6765\u64a4\u9500\u3002","The next group of formatting shortcuts are applied as you type or when you insert them around plain text in the same paragraph. Press Escape or the Undo button to undo.":"\u4ee5\u4e0b\u7684\u683c\u5f0f\u6377\u5f84\u5c06\u4f1a\u5728\u60a8\u6253\u5b57\u6216\u5c06\u5b83\u4eec\u63d2\u5165\u540c\u4e00\u6bb5\u843d\u79cd\u7684\u7eaf\u6587\u672c\u5468\u56f4\u65f6\u88ab\u81ea\u52a8\u5e94\u7528\u3002\u6309 Esc \u6216\u64a4\u9500\u6309\u94ae\u6765\u64a4\u9500\u3002"}); tinymce.ScriptLoader.markDone( 'https://www.88531.cn/wp-includes/js/tinymce/langs/zh.js' ); </script> <script type="text/javascript"> var ajaxurl = "/wp-admin/admin-ajax.php"; ( function() { var initialized = []; var initialize = function() { var init, id, inPostbox, $wrap; var readyState = document.readyState; if ( readyState !== 'complete' && readyState !== 'interactive' ) { return; } for ( id in tinyMCEPreInit.mceInit ) { if ( initialized.indexOf( id ) > -1 ) { continue; } init = tinyMCEPreInit.mceInit[id]; $wrap = tinymce.$( '#wp-' + id + '-wrap' ); inPostbox = $wrap.parents( '.postbox' ).length > 0; if ( ! init.wp_skip_init && ( $wrap.hasClass( 'tmce-active' ) || ! tinyMCEPreInit.qtInit.hasOwnProperty( id ) ) && ( readyState === 'complete' || ( ! inPostbox && readyState === 'interactive' ) ) ) { tinymce.init( init ); initialized.push( id ); if ( ! window.wpActiveEditor ) { window.wpActiveEditor = id; } } } } if ( typeof tinymce !== 'undefined' ) { if ( tinymce.Env.ie && tinymce.Env.ie < 11 ) { tinymce.$( '.wp-editor-wrap ' ).removeClass( 'tmce-active' ).addClass( 'html-active' ); } else { if ( document.readyState === 'complete' ) { initialize(); } else { document.addEventListener( 'readystatechange', initialize ); } } } if ( typeof quicktags !== 'undefined' ) { for ( id in tinyMCEPreInit.qtInit ) { quicktags( tinyMCEPreInit.qtInit[id] ); if ( ! window.wpActiveEditor ) { window.wpActiveEditor = id; } } } }()); </script> <div id="wp-link-backdrop" style="display: none"></div> <div id="wp-link-wrap" class="wp-core-ui" style="display: none" role="dialog" aria-modal="true" aria-labelledby="link-modal-title"> <form id="wp-link" tabindex="-1"> <input type="hidden" id="_ajax_linking_nonce" name="_ajax_linking_nonce" value="753fc9d68f" /> <h1 id="link-modal-title">插入或编辑链接</h1> <button type="button" id="wp-link-close"><span class="screen-reader-text"> 关闭 </span></button> <div id="link-selector"> <div id="link-options"> <p class="howto" id="wplink-enter-url">输入目标 URL</p> <div> <label><span>网址</span> <input id="wp-link-url" type="text" aria-describedby="wplink-enter-url" /></label> </div> <div class="wp-link-text-field"> <label><span>链接文字</span> <input id="wp-link-text" type="text" /></label> </div> <div class="link-target"> <label><span></span> <input type="checkbox" id="wp-link-target" /> 在新标签页中打开链接</label> </div> </div> <p class="howto" id="wplink-link-existing-content">或链接到站点中的内容</p> <div id="search-panel"> <div class="link-search-wrapper"> <label> <span class="search-label">搜索</span> <input type="search" id="wp-link-search" class="link-search-field" autocomplete="off" aria-describedby="wplink-link-existing-content" /> <span class="spinner"></span> </label> </div> <div id="search-results" class="query-results" tabindex="0"> <ul></ul> <div class="river-waiting"> <span class="spinner"></span> </div> </div> <div id="most-recent-results" class="query-results" tabindex="0"> <div class="query-notice" id="query-notice-message"> <em class="query-notice-default">未指定搜索条件。自动显示最近发布条目。</em> <em class="query-notice-hint screen-reader-text"> 搜索或使用上下方向键来选择一项。 </em> </div> <ul></ul> <div class="river-waiting"> <span class="spinner"></span> </div> </div> </div> </div> <div class="submitbox"> <div id="wp-link-cancel"> <button type="button" class="button">取消</button> </div> <div id="wp-link-update"> <input type="submit" value="添加链接" class="button button-primary" id="wp-link-submit" name="wp-link-submit"> </div> </div> </form> </div> </body> </html>