oflyhigh avatar

每天进步一点点:再捡PyMSSQL 以及一些或许有用的查询

oflyhigh

Published: 23 Mar 2021 › Updated: 23 Mar 2021每天进步一点点:再捡PyMSSQL 以及一些或许有用的查询

每天进步一点点:再捡PyMSSQL 以及一些或许有用的查询

前两年使用过PyMSSQL处理过一些链上数据,但是后来因为数据库订阅成本太高了,就放弃了。最近看到HiveSQL改成由提案支付费用,但是对用户免费,于是用打算拿来用用看。

image.png
(图源 :pixabay)

基本用法

虽然我最终打算使用PHP连接HiveSQL,但是使用PyMSSQL来做一些调试还是很方便的。PyMSSQL可以使用如下指令安装:

pip3 install pymssql

然后使用类似如下代码,就可以进行一些简单的查询了:

image.png

将数据库主机名、用户、密码等换成对应的信息,就可以查询在HIVE链上,我写的,标题中包含香蕉派关键字的文章标题了。

从返回结果来看,我还没少水相关的内容:

image.png

查询数据表

其实连接数据库,最重要的内容就是其中的SQL语句怎么写,也就是上述代码中SELECT title ......那部分,不过在这之前,我们要知道数据中有哪些表,表中都有哪些字段,这样才能方便我们进行查询。

而在几年前,我使用如下语句查询数据库中包含的表的情况:

SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name

然而用这种方式,我链接HiveSQL却什么都没有查询到。去搜索一下才了解到,上述用法适合MSSQL的早些版本,而新版中,应该使用如下方式:

SELECT table_name FROM information_schema.tables;

这是其中部分返回内容,我们上述示例使用Comments表,就在其中:

image.png

查询数据表字段

查询字段以前我使用如下语句:

SELECT Name FROM DatabaseName..SysColumns WHERE id=Object_Id('TableName')

让我来试试:

image.png

还好这个语句还能用,没因为版本变化而变化。Comments表返回如下字段:

image.png

不过貌似针对新版,下列语句更明了一些:

SELECT column_name FROM information_schema.columns WHERE table_name = '表名'

试了一下,工作良好!以后就用这个啦!

查询字段详细信息

查询字段详细信息我以前使用如下方式,试了一下还是可以工作的:

SELECT SysColumns.Name, SysTypes.Name, SysColumns.IsNullable, SysColumns.Length FROM SysColumns, SysTypes WHERE SysColumns.XUserType = SysTypes.XUserType AND SysColumns.Id = object_id('Comments')

不过汲取上个操作的经验,使用INFORMATION_SCHEMA来查询应该更清晰明了一些,所以改写一下,应该是这个样子:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, CHARACTER_OCTET_LENGTH FROM information_schema.columns WHERE table_name = '表名';

关于长度的返回上,后者对固定长度类型都返回None,作为对比,放两图:

image.png image.png

不过这并不影响我这种初级使用者,就不深入研究了。


没想到一两年不用,变化还挺大的,看大神在群里发表情图,今天不学习,明天变垃圾

image.png

也许没那么快变垃圾,但是再不学习的话,真的更不上时代发展变迁了。😭

相关链接:

Leave 每天进步一点点:再捡PyMSSQL 以及一些或许有用的查询 to:

Written by

Read more #cn posts


Best Posts From oflyhigh

We have not curated any of oflyhigh's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From oflyhigh