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

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

image.png
(图源 :pixabay)

基本用法

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

pip3 install pymssql

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

Reveal spoiler

image.png

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

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

Reveal spoiler

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表,就在其中:

Reveal spoiler

image.png

查询数据表字段

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

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

让我来试试:

Reveal spoiler

image.png

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

Reveal spoiler

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,作为对比,放两图:

Reveal spoiler

image.png image.png

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


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

Reveal spoiler

image.png

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

相关链接:

Sort:  

补充:查询所有数据库名

老方法:

SELECT Name FROM Master..SysDatabases ORDER BY Name

新方法:

SELECT name FROM sys.databases

参考链接:

唉,最近我也沒時間讀書學習,已變成垃圾了😭😭😭
今天開始就重新拿起書本,希望可以循環再用XDDD

加油,一定要好好学习!

謝謝O哥,我會好好學習,希望每天進步一點點^^