麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
723
2023-12-13
导读:很多朋友问到关于python获取数据库数据一共有多少行的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!Python数据库API(DB API)虽然 Python 需要为操作不同的数据库使用不同的模块,但不同的数据库模块并非没有规律可循,因为它们基本都遵守 Python 制订的 DB API 协议,目前该协议的最新版本是 2.0,因此这些数据库模块有很多操作其实都是相同的。
下面先介绍不同数据库模块之间的通用内容全局变量Python 推荐支持 DB API 2.0 的数据库模块都应该提供如下 3 个全局变量:apilevel:该全局变量显示数据库模块的 API 版本号对于支持 DB API 2.0 版本的数据库模块来说,该变量值通常就是 2.0。
如果这个变量不存在,则可能该数据库模块暂时不支持 DB API 2.0读者应该考虑选择使用支持该数据库的其他数据库模块threadsafety:该全局变量指定数据库模块的线程安全等级,该等级值为 0~3 ,其中 3 代表该模块完全是线程安全的;1 表示该模块具有部分线程安全性,线程可以共享该模块,但不能共享连接;0 则表示线程完全不能共享该模块。
paramstyle:该全局变量指定当 SQL 语句需要参数时,可以使用哪种风格的参数该变量可能返回如下变量值:format:表示在 SQL 语句中使用 Python 标准的格式化字符串代表参数例如,在程序中需要参数的地方使用 %s,接下来程序即可为这些参数指定参数值。
pyformat:表示在 SQL 语句中使用扩展的格式代码代表参数比如使用 %(name),这样即可使用包含 key 为 name 的字典为该参数指定参数值qmark:表示在 SQL 语句中使用问号(?)代表参数。
在 SQL 语句中有几个参数,全部用问号代替numeric:表示在 SQL 语句中使用数字占位符(:N)代表参数例如:1 代表一个参数,:2 也表示一个参数,这些数字相当于参数名,因此它们不一定需要连续。
named:表示在 SQL 语句中使用命名占位符(:name)代表参数例如 :name 代表一个参数,:age 也表示一个参数通过查阅这些全局变量,即可大致了解该数据库 API 模块的对外的编程风格,至于该模块内部的实现细节,完全由该模块实现者负责提供,通常不需要开发者关心。
数据库 API 的核心类遵守 DB API 2.0 协议的数据库模块通常会提供一个 connect() 函数,该函数用于连接数据库,并返回数据库连接对象数据库连接对象通常会具有如下方法和属性:cursor(factory=Cursor):打开游标。
commit():提交事务rollback():回滚事务close():关闭数据库连接isolation_level:返回或设置数据库连接中事务的隔离级别in_transaction:判断当前是否处于事务中。
上面第一个方法可以返回一个游标对象,游标对象是 Python DB API 的核心对象,该对象主要用于执行各种 SQL 语句,包括 DDL、DML、select 查询语句等使用游标执行不同的 SQL 语句返回不同的数据。
游标对象通常会具有如下方法和属性:execute(sql[, parameters]):执行 SQL 语句parameters 参数用于为 SQL 语句中的参数指定值executemany(sql, seq_of_parameters):重复执行 SQL 语句。
可以通过 seq_of_parameters 序列为 SQL 语句中的参数指定值,该序列有多少个元素,SQL 语句被执行多少次executescript(sql_script):这不是 DB API 2.0 的标准方法。
该方法可以直接执行包含多条 SQL 语句的 SQL 脚本fetchone():获取查询结果集的下一行如果没有下一行,则返回 Nonefetchmany(size=cursor.arraysize):返回查询结果集的下 N 行组成的列表。
如果没有更多的数据行,则返回空列表fetchall():返回查询结果集的全部行组成的列表close():关闭游标rowcount:该只读属性返回受 SQL 语句影响的行数对于 executemany() 方法,该方法所修改的记录条数也可通过该属性获取。
lastrowid:该只读属性可获取最后修改行的 rowidarraysize:用于设置或获取 fetchmany() 默认获取的记录条数,该属性默认为 1有些数据库模块没有该属性description:该只读属性可获取最后一次查询返回的所有列的信息。
connection:该只读属性返回创建游标的数据库连接对象有些数据库模块没有该属性总结来看,Python 的 DB API 2.0 由一个 connect() 开始,一共涉及数据库连接和游标两个核心 API。
它们的分工如下:数据库连接:用于获取游标、控制事务游标:执行各种 SQL 语句掌握了上面这些 API 之后,接下来可以大致归纳出 Python DB API 2.0 的编程步骤操作数据库的基本流程使用 Python DB API 2.0 操作数据库的基本流程如下:
调用 connect() 方法打开数据库连接,该方法返回数据库连接对象通过数据库连接对象打开游标使用游标执行 SQL 语句(包括 DDL、DML、select 查询语句等)如果执行的是查询语句,则处理查询数据。
关闭游标关闭数据库连接下图显示了使用 Python DB API 2.0 操作数据库的基本流程python数据分析怎样查有多少行数据from __future__ import print_functionimport timeif __name__ == __main__:。
import sys start = time.time() with open(sys.argv[1],rb) as f: count = 0 last_data = \n
while True: data = f.read(0x400000) if not data: break count += data.count(b\n)
last_data = data if last_data[-1:] != b\n: count += 1 # Remove this if a wc-like count is needed
end = time.time() print(count) print((end-start) * 1000)这跟wc -l略有区别,如果要跟wc -l一致的话,可以将带注释的行删掉。
这里没有处理universal newline、忽略空行等逻辑,如果需要这些功能,程序会变得复杂一些。
请教python操作数据库表的结果集的整理,选择开始菜单中→程序→【Management *** 2008】→【*** Management Studio】命令,打开【*** Management Studio】窗口,并使用Windows或 ***身份验证建立连接。
在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令执行上述操作后,会弹出【新建数据库】对话框在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。
完成这三个选项中的设置会后,就完成了数据库的创建工作,在【数据库名称】文本框中输入要新建数据库的名称例如,这里以“新建的数据库”在【所有者】文本框中输入新建数据库的所有者,如sa根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。
在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件通过单击下面的【添加】、【删除】按钮添加或删除数据库文件切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到【文件组】页,在这里可以添加或删除文件组完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框至此“新建的数据”数据库创建成功新建的数据库可以再【对象资源管理器】窗口看到python 导入txt到数据库 每8行写入。
# 8行结束有一个空白行with open(data.txt) as data: line = 1 sql = insert into fz_esx values(%s,%s,%s,%s,%s,%s,%s,%s)
values = [] for d in data: if d != : values.append("%s" % str(d)) if line % 9 == 0:
# 执行sql插入代码 # urs.exec(sql % tuple(values)) del values[:] line += 1
# 当然如果不行浪费sql资源,可以全部拼接完inert语句 一次执行# 如果是生产环境, 建议使用队列的思路,例如"芹菜"库python把数据写入文件,规定每个文件只有固定行数要规定行数的话,就得先规定列数了。
否则从头到尾就一行,也就没有意义了,如果可以确定行尾的话,也可以用换行确定计数例:for item in yourdata: count = 0 f = open(yourfile,w) while(count20):
f.write(yourdata) count +=1 f.close()python中如何将表中的数据做成一张表,然后再从中取出数据?第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。
Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入获取外部数据python 支持从多种类型的数据导入在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。
1 import numpy as np2 import pandas as pd导入数据表下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。
感兴趣的朋友可以参考 pandas 的官方文档1 df=pd.DataFrame(pd.read_csv(‘name.csv’,header=1))2 df=pd.DataFrame(pd.read_excel(‘name.xlsx’))。
创建数据表另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。
在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等后面将在数据清洗步骤进行处理后面我们将统一以 DataFrame 的简称 df 来命名数据表1 df = pd.DataFrame({‘id’:[1001,1002,1003,1004,1005,1006],
2 ‘date’:pd.date_range(‘20130102’, periods=6),3 ‘city’:[Beijing , ‘SH’, ’ guangzhou , ‘Shenzhen’, ‘shanghai’, BEIJING ],
4 ‘age’:[23,44,54,32,34,32],5 ‘category’:[‘100-A’,‘100-B’,‘110-A’,‘110-C’,‘210-A’,‘130-F’],6 ‘price’:[1200,np.nan,2133,5433,np.nan,4432]},
7 columns =[‘id’,‘date’,‘city’,‘category’,‘age’,‘price’])这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。
数据表检查python 中处理的数据量通常会比较大,所以就需要我们对数据表进行检查比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。
数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容为后面的清洗和预处理做好准备数据维度(行列)Excel 中可以通过 CTRL 向下的光标键,和 CTRL 向右的光标键来查看行号和列号。
Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列下面是具体的代码1 #查看数据表的维度2 df.shape3 (6, 6)
数据表信息使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息1 #数据表信息2 df.info()4 class ‘pandas.core.frame.DataFrame’。
5 RangeIndex: 6 entries, 0 to 56 Data columns (total 6 columns):7 id 6 non-null int648 date 6 non-null datetime64[ns]
9 city 6 non-null object10 category 6 non-null object11 age 6 non-null int6412 price 4 non-null float64
13 dtypes: datetime64ns, float64(1), int64(2), object(2)14 memory usage: 368.0 bytes查看数据格式Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。
Python 中使用 dtypes 函数来返回数据格式Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看1#查看数据表各列格式2df.dtypes34id int64
5date datetime64[ns]6city object7category object8age int649price float6410dtype: object1112#查看单列格式13df[‘B’].dtype
1415dtype(‘int64’)查看空值Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位“定位条件”在“开始”目录下的“查找和选择”目录中Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。
可以对整个数据表进行检查,也可以单独对某一列进行空值检查df_isnull1#检查特定列空值2df[‘price’].isnull()340 False51 True62 False73 False84 True
95 False10Name: price, dtype: bool查看唯一值Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记Python 中使用 unique 函数查看唯一值Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。
下面是代码,返回的结果是该列中的唯一值类似与 Excel 中删除重复项后的结果1 #查看 city 列中的唯一值2 df[‘city’].unique()34array([Beijing , ‘SH’, ’ guangzhou , ‘Shenzhen’, ‘shanghai’, BEIJING ], dtype=object)
查看数据表数值Python 中的 Values 函数用来查看数据表中的数值以数组的形式返回,不包含表头信息1#查看数据表的值2df.values34array([[1001, Timestamp(‘2013-01-02 00:00:00’), Beijing , ‘100-A’, 23,。
5 1200.0],6 [1002, Timestamp(‘2013-01-03 00:00:00’), ‘SH’, ‘100-B’, 44, nan],7 [1003, Timestamp(‘2013-01-04 00:00:00’), ’ guangzhou , ‘110-A’, 54,
8 2133.0],9 [1004, Timestamp(‘2013-01-05 00:00:00’), ‘Shenzhen’, ‘110-C’, 32,10 5433.0],11 [1005, Timestamp(‘2013-01-06 00:00:00’), ‘shanghai’, ‘210-A’, 34,
12 nan],13 [1006, Timestamp(‘2013-01-07 00:00:00’), BEIJING , ‘130-F’, 32,14 4432.0]], dtype=object)查看列名称
Colums 函数用来单独查看数据表中的列名称1 #查看列名称2 df.columns34 Index([‘id’, ‘date’, ‘city’, ‘category’, ‘age’, ‘price’], dtype=‘object’)。
查看前 10 行数据Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数下面的代码中设置查看前 3 行的数据1#查看前 3 行数据``df.head(``3``)。
Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数下面的代码中设置查看后 3 行的数据1#查看最后 3 行df.tail(3)。
结语:以上就是首席CTO笔记为大家介绍的关于python获取数据库数据一共有多少行的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。