在Python日常生活中,会遇到哪些类型的数据源或数据类型

在Python日常生活中,会遇到哪些类型的数据源或数据类型,第1张

在日常生活中,Python会涉及到各种类型的数据源和数据类型。以下是其中一些常见的:

文本文件:Python经常用于处理文本文件,例如txt、csv等等。我们可以使用Python的内置文件处理函数来读取和写入这些文件。

数据库:Python中有许多模块可以连接和 *** 作数据库,包括MySQL、Oracle、SQLite等等。我们可以使用Python *** 作数据库管理数据。

网络数据:在Web应用程序中,Python可以用来处理来自用户浏览器或其他Web服务的各种数据。并且,因为Python有许多>

SQL Server Compact可以免费应用到移动设备,桌面程序,甚至WEB应用里面,由于SQL Server

Compact是In-process的数据库引擎,无需额外的安装和维护。SQL Server Compact和Microsoft SQL

Server产品族共享通用的API,在NET开发上可以使用通用的ADONET APIs, 同时支持LINQ and Entity

Framework。SQL Server Compact不支持存储过程,但是支持T-SQL的子集,在桌面应用可以替代Access,为升级为SQL

Server其他版本提供便利。

参考:>

SQLite是ANSI-C的源代码。在使用之前必须要编译成机器码。这篇文章是用于各种编译SQLite方法的指南。

这篇文章不包含编译SQLite的每个步骤的反馈,那样可能会困难因为每种开发场景都不同。所以这篇文章描述和阐述了编译Sqlite的原则。典型的编译命令已经作为例子提供了,以期望应用开发者能够使用这些例子作为完成他们自己定制的编译过程的的一个指南。换句话说,这篇文章提供了想法和见解,而不是交钥匙的解决方法。

融合VS单独源文件

Sqlite是由超过一百个c源码文件以及众多的目录下的脚本构建的。Sqlite的实现是纯粹的ANSI-C,但是许多C语言源代码文件是由辅助的C程序生成或者转换来的,并且AWK,SED和TCL脚本会融合到完成的sqlite库中。对Sqlite构建需要的C程序和转换和创建C语言源码是一个复杂的过程。

为了简化这些,sqlite也通过一个预打包的合并后的源码文件:sqlite3c。这个合并文件是一个ANSI-C源码实现整个SQLite库的唯一文件。合并后的文件更容易处理。所有的东西都包含在这一个文件里,所以很容易进入一个更大的C或者C++程序的源码树。所有的代码生成和转换步骤都已经实现了,因此没有辅助的C程序需要去配置和变异,也没有脚本需要去运行。并且,因此所有哭都包含在一个翻译单元,编译器可以做更多高级的优化从而提升5%到10%的性能。因为这些原因,融合后的源码文件sqlite3c对所有程序来讲都是值得推荐的。

推荐所有的应用程序使用融合文件。

直接从单独的源码文件中构建sqlite当然可以,但是并不推荐。对一些特殊的应用程序,可能需要修改构建程序去处理使用那些从网站上下载的预构建的源码文件不能完成的情况。对于这些情况,推荐构建和使用一个定制过的合并文件。换句话说,即使一个工程需要以单独的源码文件构建sqlite,仍然推荐使用一个融合后的源码文件作为一个中间步骤。

编译命令行接口(CLI)

构建命令行接口需要三个源码文件:

sqlite3c:Sqlite融合的源码文件

sqlite3h:匹配sqlite3c以及定义sqlite的c语言接口的头文件

shellc:命令行接口程序本身。这个c源码文件包含一个main()的例程和每轮循环的用户输入的提示符并将输入传给sqlite数据库引擎用于处理。

所有的上述源码的三个文件都被包含在下载页面的amalgamation tarball中。

为了构建CLI,简单的将这三个文件放置在相同的目录下然后一起编译他们。用MSVC:

cl shellc sqlite3c -Fesqlite3exe

在unix系统上(或者在windows上用cygwin或者mingw+msys)典型的命令会有些像这样:

gcc shellc sqlite3c -lpthread -ldl

为了SQLite线程安全,需要pthreads库。但是因为CLI是一个单线程的,我们可以指示SQLite构建一个非线程安全的库并因此护绿pthreads库:

gcc -DSQLITE_THREADSAFE=0 shellc sqlite3c -ldl

-ldl库是在支持动态装载时需要,例如sqlite3_load_extension() 接口和load_extension()

SQL function。如果这些特性都不要求,那么我们也可以使用SQLITE_OMIT_LOAD_EXTENSION编译时间选项忽略他们。

gcc -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION shellc sqlite3c

有人可能想要提供其他的编译时间选项(compile-time options),例如SQLITE_ENABLE_FTS3去全文本搜索或者SQLITE_ENABLE_RTREE用于R树搜索引擎扩展。而有人将正常指定一些编译优化开关。(预编译的CLI可以从选择sqlite网站上使用“-Os”下载下来)有无数种可能的变数在这里。

关键点在这里:构建CLI需要编译一起两个C语言文件。shellc文件包含入口的定义和用户输入的loop,而sqlite融合文件sqlite3c包含完整的sqlite库的实现。

编译TCL接口

sqlite的tcl接口是一个小的模块被添加到一般的融合文件中。结果是一个新的融合后的源码文件,称之为“tclsqlite3c”。这个源码文件是生成一个可以使用TCL

load命令去加载到一个标准的tclsh或者wish中,或者随着sqlite构建成功生成一个单独唯一的tclsh的共享库所需要的。一个tcl的融合的副本被包含在下载页的TEA

tarball中作为一个文件。

为了生成一个linux上的sqlite的TCL-loadable库,下面的命令需要满足:

gcc -o libtclsqlite3so -shared tclsqlite3c -lpthread -ldl -ltcl

不幸的是构建Mac OS X 和 Windows的共享库并不是如此简单。对于这些平台最好使用包含在TEA tarball中的configure脚本和makefile

为了生成一个单独的tclsh,可以用于sqlite静态链接,使用如下的编译器调用:

gcc -DTCLSH=1 tclsqlite3c -ltcl -lpthread -ldl -lz -lm

这里的技巧是-DTCLSH=1选项。sqlite的TCL接口模块包含一个main的过程,用于初始化一个TCL解释器并在以-DTCLSH=1编译后进入到一个命令行loop。上述命令可以工作在Linux和Mac

OS X,虽然有时可能需要依赖于平台调整库选项以及编译的TCL的哪一个版本。

构建融合文件

下载页提供的sqlite融合文件的版本对大多数用户来说是足够的。然而,一些工程可能想要或者需要构建他们自己的融合文件。一个常见的构建一个定制的融合文件的理由是为了使用特定的compile-time options来定制sqlite库。回想sqlite融合文件中包含了许多C代码由辅助程序和脚本生成。许多的编译时间选项影响这一成圣代码而且必须在融合文件组装前提供给代码生成器。这一系列必须传给代码生成器的编译时间相关的选项会使得sqlite的发布版本各不相同,但是在写这边文章的时候,代码生成器需要知道的这组选项包括:

SQLITE_ENABLE_UPDATE_DELETE_LIMIT

SQLITE_OMIT_ALTERTABLE

SQLITE_OMIT_ANALYZE

SQLITE_OMIT_ATTACH

SQLITE_OMIT_AUTOINCREMENT

SQLITE_OMIT_CAST

SQLITE_OMIT_COMPOUND_SELECT

SQLITE_OMIT_EXPLAIN

SQLITE_OMIT_FOREIGN_KEY

SQLITE_OMIT_PRAGMA

SQLITE_OMIT_REINDEX

SQLITE_OMIT_SUBQUERY

SQLITE_OMIT_TEMPDB

SQLITE_OMIT_TRIGGER

SQLITE_OMIT_VACUUM

SQLITE_OMIT_VIEW

SQLITE_OMIT_VIRTUALTABLE

为了构建一个定制的融合文件,先下载原始的独立源码文件到一个unix或者类unix开发平台。确定获取的原始源码文件不是“预编译过的源文件”。任何人都可以通过到下载页或者直接从configuration management system获取完整的一套原始源码文件。

假设sqlite源码树被存在一个名为“sqlite”的目录下。计划构建一个平行目录下的名为“bld”的融合文件。首先通过运行sqlite源码树种的configure脚本运行或者通过制作一份源码树顶层的的makfile模板的一份,来构建一个合适的makefile然后手动编辑这个Makfile去包含需要的编译时间相关的选项。最终运行:

make sqlite3c

在windows上使用MSVC:

nmake /f Makefilemsc sqlite3c

sqlite3c的make

target会自动构造一般的“sqlite3c”合并的源码文件,以及它的头文件“sqlite3h”,和包含TCL接口的融合源码文件“tclsqlite3c”。之后,需要的文件可以被拷贝到文件目录下然后根据上述勾勒的过程编译。

构建一个windows的动态链接库DLL

为了在windows构建一个sqlite的dll使用,首先获取对应的融合过的源码文件,sqlit3c和sqliteh。这些可以从SQLite website上下载或者和上述告知的一样去定制生成。

使用工作目录下的源码文件,一个dll可以在msvc中使用如下命令生成:

cl sqlite3c -link -dll -out:sqlite3dll

上述命令需要运行在msvc的MSVC Native Tools Command

Prompt如何你已经在机器上安装了msvc,你可能有多个版本的这种命令提示符,针对于x86和x64的自带构建的,或者交叉编译到ARM的。依赖要求的DLL去使用对应合适的命令提示符工具。

如果使用MinGW编译器,命令是这样的:

gcc -shared sqlite3c -o sqlite3dll

注意MinGW只生成32位的dll。另有一个分开的MinGW64工程可以用来生成64位的dll。可以推断其命令行语法是类似的。需要注意的是最近的MSVC的版本生成的DLLs可能不能工作到WinXP或者更早版本的windows上。因此为了最大限度的兼容你的生成的dll,推荐MinGW。一个好的经验法则是使用MinGW去生成32位的dlls,使用msvc去生成64位的dlls。

这三个具体都有各自的有点和缺点,哪个好需要看使用在什么地方

1、什么时候要用 SQLite

a)、嵌入式应用 所有需要迁移性,不需要扩展的应用,例如,单用户的本地应用,移动应用和游戏

b)、代替磁盘访问 在很多情况下,需要频繁直接读/写磁盘文件的应用,都很适合转为使用 SQLite ,可以得益于 SQLite 使用 SQL 带来的功能性和简洁性

c)、测试 它能秒杀大部分专门针对应用业务逻辑(也就是应用的主要目的:能完成功能)的测试

2、什么时候不要用SQLite

a)、多用户应用 如果你在开发的应用需要被多用户访问,而且这些用户都用同一个数据库,那么相比 SQLite 最好还是选择一个功能完整的关系型数据库(例如 MySQL)

b)、需要大面积写入数据的应用 SQLite 的缺陷之一是它的写入 *** 作。这个数据库同一时间只允许一个写 *** 作,因此吞吐量有限

3、何时使用 MySQL?

a)、分布式 *** 作 当你需要的比SQLite可以提供的更多时,把MySQL包括进你的部署栈,就像任何一个独立的数据库服务器,会带来大量的 *** 作自由和一些先进的功能

b)、高安全性 MySQL的安全功能,用一种简单的方式为数据访问(和使用)提供了可靠的保护

c)、Web网站 和 Web应用 绝大多数的网站(和Web应用程序)可以忽视约束性地简单工作在MySQL上。这种灵活的和可扩展的工具是易于使用和易于管理的——这被证明非常有助于长期运行

d)、定制解决方案 如果你工作在一个高度量身定制的解决方案上,MySQL能够很容易地尾随和执行你的规则,这要感谢其丰富的配置设置和 *** 作模式

4、何时不用 MySQL?

a)、SQL 服从性 因为 MySQL 没有[想要]实现 SQL 的全部标准,所以这个工具不完全符合SQL。如果你需要对这样的关系数据库管理系统进行整合,从MySQL进行切换是不容易的

b)、并发 即使MySQL和一些存储引擎能够真地很好执行读取 *** 作,但并发读写还是有问题的

c)、缺乏特色 再次提及,根据数据库引擎的选择标准,MySQL会缺乏一定的特性,如全文搜索

5、何时使用PostgreSQL?

a)、数据完整性 当可靠性和数据完整性是绝对必要而无需理由时,PostgreSQL是更好的选择

b)、复杂的自定义过程 如果你需要你的数据库执行自定义过程,可扩展的PostgreSQL是更好的选择

c)、整合 在将来,如果可能要把整个数据库系统迁移到另一个适当的解决方案(例如Oracle)中,PostgreSQL对于这种切换将是最兼容和易于 *** 作的

d)、复杂的设计 相比其他的开源和免费的 RDBMS(关系数据库管理系统)实现来说,对于复杂的数据库设计,PostgreSQL提供了大部分的功能和可能性,同时并没放弃其他有价值的地方

6、何时不用 PostgreSQL?

a)、速度 如果你需要的只是快速的读取 *** 作, PostgreSQL 不是为此而准备的工具

b)、简化体制 除非你需要绝对的数据完整性,原子性,一致性,隔离性,耐久性,或复杂的设计,PostgreSQL 对简化体制来说是杀手

c)、复制 除非你愿意花不少时间,精力和资源,否则对于那些缺乏数据库和系统管理经验的人来说,实现与MySQL的(主从)复制可能不容易

以上就是关于在Python日常生活中,会遇到哪些类型的数据源或数据类型全部的内容,包括:在Python日常生活中,会遇到哪些类型的数据源或数据类型、sqlite多个版本时怎么启动的、用SQL Server Compact Edition可以代替Sqlite应用于Winform中吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10215540.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存