导读:很多朋友问到关于python获取数据库数据一共有多少行的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
Python数据库API(DBAPI)虽然Python需要为操作不同的数据库使用不同的模块,但不同的数据库模块并非没有规律可循,因为它们基本都遵守Python制订的DBAPI协议,目前该协议的最新版本是2.0,因此这些数据库模块有很多操作其实都是相同的。下面先介绍不同数据库模块之间的通用内容。
全局变量
Python推荐支持DBAPI2.0的数据库模块都应该提供如下3个全局变量:
apilevel:该全局变量显示数据库模块的API版本号。对于支持DBAPI2.0版本的数据库模块来说,该变量值通常就是2.0。如果这个变量不存在,则可能该数据库模块暂时不支持DBAPI2.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的核心类
遵守DBAPI2.0协议的数据库模块通常会提供一个connect()函数,该函数用于连接数据库,并返回数据库连接对象。
数据库连接对象通常会具有如下方法和属性:
cursor(factory=Cursor):打开游标。
commit():提交事务。
rollback():回滚事务。
close():关闭数据库连接。
isolation_level:返回或设置数据库连接中事务的隔离级别。
in_transaction:判断当前是否处于事务中。
上面第一个方法可以返回一个游标对象,游标对象是PythonDBAPI的核心对象,该对象主要用于执行各种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):这不是DBAPI2.0的标准方法。该方法可以直接执行包含多条SQL语句的SQL脚本。
fetchone():获取查询结果集的下一行。如果没有下一行,则返回None。
fetchmany(size=cursor.arraysize):返回查询结果集的下N行组成的列表。如果没有更多的数据行,则返回空列表。
fetchall():返回查询结果集的全部行组成的列表。
close():关闭游标。
rowcount:该只读属性返回受SQL语句影响的行数。对于executemany()方法,该方法所修改的记录条数也可通过该属性获取。
lastrowid:该只读属性可获取最后修改行的rowid。
arraysize:用于设置或获取fetchmany()默认获取的记录条数,该属性默认为1。有些数据库模块没有该属性。
description:该只读属性可获取最后一次查询返回的所有列的信息。
connection:该只读属性返回创建游标的数据库连接对象。有些数据库模块没有该属性。
总结来看,Python的DBAPI2.0由一个connect()开始,一共涉及数据库连接和游标两个核心API。它们的分工如下:
数据库连接:用于获取游标、控制事务。
游标:执行各种SQL语句。
掌握了上面这些API之后,接下来可以大致归纳出PythonDBAPI2.0的编程步骤。
操作数据库的基本流程
使用PythonDBAPI2.0操作数据库的基本流程如下:
调用connect()方法打开数据库连接,该方法返回数据库连接对象。
通过数据库连接对象打开游标。
使用游标执行SQL语句(包括DDL、DML、select查询语句等)。如果执行的是查询语句,则处理查询数据。
关闭游标。
关闭数据库连接。
下图显示了使用PythonDBAPI2.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一致的话,可以将带注释的行删掉。
这里没有处理universalnewline、忽略空行等逻辑,如果需要这些功能,程序会变得复杂一些。
请教python操作数据库表的结果集的整理
,选择开始菜单中→程序→【ManagementSQLServer2008】→【SQLServerManagementStudio】命令,打开【SQLServerManagementStudio】窗口,并使用Windows或SQLServer身份验证建立连接。
在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。
执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有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把数据写入文件,规定每个文件只有固定行数要规定行数的话,就得先规定列数了。否则从头到尾就一行,也就没有意义了,如果可以确定行尾的话,也可以用换行确定计数。例:
foriteminyourdata:
count=0
f=open('yourfile','w')
while(count20):
f.write(yourdata)
count+=1
f.close()
python中如何将表中的数据做成一张表,然后再从中取出数据?第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。Excel中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。
获取外部数据
python支持从多种类型的数据导入。在开始使用python进行数据导入前需要先导入pandas库,为了方便起见,我们也同时导入numpy库。
1importnumpyasnp
2importpandasaspd
导入数据表
下面分别是从excel和csv格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考pandas的
官方文档。
1df=pd.DataFrame(pd.read_csv(‘name.csv’,header=1))
2df=pd.DataFrame(pd.read_excel(‘name.xlsx’))
创建数据表
另一种方法是通过直接写入数据来生成数据表,excel中直接在单元格中输入数据就可以,python中通过下面的代码来实现。生成数据表的函数是pandas库中的DateFrame函数,数据表一共有6行数据,每行有6个字段。在数据中我们特意设置了一些NA值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以DataFrame的简称df来命名数据表。
1df=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]},
7columns=[‘id’,‘date’,‘city’,‘category’,‘age’,‘price’])
这是刚刚创建的数据表,我们没有设置索引列,price字段中包含有NA值,city字段中还包含了一些脏数据。
数据表检查
python中处理的数据量通常会比较大,所以就需要我们对数据表进行检查。比如我们之前的文章中介绍的纽约出租车数据和Citibike的骑行数据,数据量都在千万级,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。
数据维度(行列)
Excel中可以通过CTRL向下的光标键,和CTRL向右的光标键来查看行号和列号。Python中使用shape函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有6行,6列。下面是具体的代码。
1#查看数据表的维度
2df.shape
3(6,6)
数据表信息
使用info函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。
1#数据表信息
2df.info()
4class‘pandas.core.frame.DataFrame’
5RangeIndex:6entries,0to5
6Datacolumns(total6columns):
7id6non-nullint64
8date6non-nulldatetime64[ns]
9city6non-nullobject
10category6non-nullobject
11age6non-nullint64
12price4non-nullfloat64
13dtypes:datetime64ns,float64(1),int64(2),object(2)
14memoryusage:368.0bytes
查看数据格式
Excel中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python中使用dtypes函数来返回数据格式。
Dtypes是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。
1#查看数据表各列格式
2df.dtypes
3
4idint64
5datedatetime64[ns]
6cityobject
7categoryobject
8ageint64
9pricefloat64
10dtype:object
11
12#查看单列格式
13df[‘B’].dtype
14
15dtype(‘int64’)
查看空值
Excel中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。
Isnull是Python中检验空值的函数,返回的结果是逻辑值,包含空值返回True,不包含则返回False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。
df_isnull
1#检查特定列空值
2df[‘price’].isnull()
3
40False
51True
62False
73False
84True
95False
10Name:price,dtype:bool
查看唯一值
Excel中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python中使用unique函数查看唯一值。
Unique是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与Excel中删除重复项后的结果。
1#查看city列中的唯一值
2df[‘city’].unique()34array(['Beijing',‘SH’,’guangzhou',‘Shenzhen’,‘shanghai’,'BEIJING'],dtype=object)
查看数据表数值
Python中的Values函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。
1#查看数据表的值
2df.values
3
4array([[1001,Timestamp(‘2013-01-0200:00:00’),'Beijing',‘100-A’,23,
51200.0],
6[1002,Timestamp(‘2013-01-0300:00:00’),‘SH’,‘100-B’,44,nan],
7[1003,Timestamp(‘2013-01-0400:00:00’),’guangzhou',‘110-A’,54,
82133.0],
9[1004,Timestamp(‘2013-01-0500:00:00’),‘Shenzhen’,‘110-C’,32,
105433.0],
11[1005,Timestamp(‘2013-01-0600:00:00’),‘shanghai’,‘210-A’,34,
12nan],
13[1006,Timestamp(‘2013-01-0700:00:00’),'BEIJING',‘130-F’,32,
144432.0]],dtype=object)
查看列名称
Colums函数用来单独查看数据表中的列名称。
1#查看列名称
2df.columns
3
4Index([‘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获取数据库数据一共有多少行的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
logo设计
创造品牌价值
¥500元起
APP开发
量身定制,源码交付
¥2000元起
商标注册
一个好品牌从商标开始
¥1480元起
公司注册
注册公司全程代办
¥0元起
查
看
更
多