Python与数据库[1] -> 数据库接口/DB-API[2] -> SQL Server 适配器
SQL_Server适配器 / SQL_Server Adapter
1 环境配置 / Environment Configuration
安装SQL_Server的Python适配器包
pip install pymssql
Note: 此处采用远程数据库服务器,因此未安装本地SQL_Server
2 SQL_Server实例 / SQL_Server Examples
由于远程数据库账号仅具有读取权限,因此此处示例基本以读取为主。
查看数据库 / Show Database
利用适配器的基本函数登录远程数据库服务器,并查看服务器中数据库名称,表名称等信息。
import pymssql as ms
def execute(cur, sql, *args):
cur.execute(sql, *args)
re = cur.fetchall()
return re def show():
cnx = ms.connect(host='host', user='user', password='password', database='db', charset='UTF-8') cur = cnx.cursor() print('{:-^30}'.format('DATABASES'))
# Show the database in sys
re = execute(cur, "SELECT * FROM sys.databases") # Show custom databases
# re = execute(cur, "SELECT * FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')")
for db in re:
try:
# Select databases
cur.execute("USE %s" % db[0])
except:
continue
# Show tables
re = execute(cur, "SELECT * FROM information_schema.TABLES") for i in re:
print(i) cur.execute('USE ITP')
print('{:-^30}'.format('TABLES'))
re = execute(cur, "SELECT * FROM information_schema.TABLES")
for tb in re:
print('\n{:-^30}'.format('TABLE CONTENTS'))
print(tb)
print('{:-^30}'.format('%s' % tb[2]))
re = execute(cur, "SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME='%s'" % tb[2])
for cl in re:
print(cl) def foo(gen):
[print(x, end='\n\n') for x in gen] if __name__=='__main__':
show()
第 2-4 行,首先定义一个执行函数,利用传入的游标执行SQL语句
第 7-39 行,定义一个显示函数,其中sys.databases中存放了所有数据库的名称信息,show函数会将所有database的信息显示出来,并查看db表的信息
此处的数据库信息均已隐藏,可以看出,无论是SQL_Server还是MySQL,利用适配器进行操作时,基本原理都是相同的,只有部分SQL语句不同。
相关阅读
2. DB-API 通用标准
Python与数据库[1] -> 数据库接口/DB-API[2] -> SQL Server 适配器的更多相关文章
- Microsoft OLE DB Provider for SQL Server 错误 '80040e21'
我的是因为数据库满了,正在向服务商申请增加数据库容量 原文地址:Microsoft OLE DB Provider for SQL Server 错误 '800作者:欧阳IT记事本 昨天打开网站还正常 ...
- Python与数据库[1] -> 数据库接口/DB-API[0] -> 通用标准
数据库接口 / DB-API 在Python中,数据库是通过适配器(Adaptor)来连接访问数据库的,适配器通常与数据库客户端接口(通常为C语言编写)想连接,而不同的适配器都会尽量满足相同的DB-A ...
- Python与数据库[1] -> 数据库接口/DB-API[3] -> ODBC 适配器
ODBC适配器 / ODBC Adaptor ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Service ...
- .NET Core 1.1日期解析无APi、SQL Server数据转换JSON
前言 在批量导入Excel中的数据时发现出生日期为整数也就是为天数,结果倒腾了翻,这是其一,其二是数据库中的某一列存的是JSON数据,但是场景是为了作为作业来运行,此时不得不将筛选出的数据手动拼接成J ...
- 数据库接口基础类 oracle,sql server
1.为数据库读取基类 public class DBBase : IDisposable { public virtual void Dispose() { throw new NotImplemen ...
- 用户、组或角色 '' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
SQLServer2008用户组或角色'*****'在当前数据库中已存在问题的解决办法 在迁移数据库的过程中SQLServer SDE的问题 为一个数据库添加一个用户时,提示以下信息:用户.组或角色 ...
- [转]如何将高版本的SQL Server数据库备份到低版本的SQL Server
本文转自:https://blog.csdn.net/wang465745776/article/details/54969676 前提条件备份SQL Server服务器版本为:12.0.2000.8 ...
- 无法将数据库从SINGLE_USER模式切换回MULTI_USER模式(Error 5064),及查找SQL Server数据库中用户spid(非SQL Server系统spid)的方法
今天公司SQL Server数据库无意间变为SINGLE_USER模式了,而且使用如下语句切换回MULTI_USER失败: ALTER DATABASE [MyDB] SET MULTI_USER W ...
- 用户、组或角色 'zgb' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
在使用SQL Server 时,我们经常会遇到一个情况:需要把一台服务器上的数据库转移到另外一台服务器上.而转移完成后,需要给一个"登录"关联一个"用户"时,往 ...
- 【数据库】一篇文章搞掂:SQL Server数据库
问题: 1.同一段代码,在存储过程中运行比普通SQL执行速度慢几十倍 原理: 在SQL Server中有一个叫做 “Parameter sniffing”参数嗅探的特性.SQL Server在存储过程 ...
随机推荐
- Caliburn.Micro 消息附加多事件
<Button Content="Let's Talk"cal:Message.Attach="[Event MouseEnter] = [Action Talk( ...
- C#向上转型与向下转型(转)
原文地址:https://blog.csdn.net/wangqingbo0829/article/details/48474173 向上转型:将子类对象转为父类对象.此处父类对象可以是接口. 向下转 ...
- HDU 3336 Count the string ( KMP next函数的应用 + DP )
dp[i]代表前i个字符组成的串中所有前缀出现的次数. dp[i] = dp[next[i]] + 1; 因为next函数的含义是str[1]~str[ next[i] ]等于str[ len-nex ...
- 七、LSP 里氏替换原则
子类的对象提供了父类的所有行为,且加上子类额外的一些东西(可以是功能,可以是属性).当程序基于父类实现时,如果将子类替换父类而程序不需修改,则说明符合LSP原则. 这个解释看的似懂非懂,再看下面更进一 ...
- 【bzoj4146】[AMPPZ2014]Divisors 数论
原文地址:http://www.cnblogs.com/GXZlegend/p/6801411.html 题目描述 给定一个序列a[1],a[2],...,a[n].求满足i!=j且a[i]|a[j] ...
- 比较运算符compareTo()、equals()、==之间的区别与应用总结
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配 ...
- GCC 中 -L、-rpath和-rpath-link的区别
GCC 中 -L.-rpath和-rpath-link的区别 来源 http://blog.csdn.net/q1302182594/article/details/42102961 关于这3个参数的 ...
- Offer 收割编程练习赛 87B 方圆距离
与坐标轴平行的矩形和圆的位置关系. 分两种情况. 圆与矩形交集不为空 此时答案为零.问题归结为如何判断圆与矩形交集不为空. 先排除矩形顶点在圆内或圆心在矩形内. 此时,若矩形与圆交集不为空,则必有矩形 ...
- 【CF #313】
B题为啥交换一下搜索顺序就会TLE啊QAQ C题原来要预处理乘法逆元才能过啊QAQ 我沙茶啊我QAQ[还是太弱 嗯A题就是道水题 B题就是字符串Hash+暴力搜 C题就是组合数+容斥原理
- 发现JDK的3个bug
1.Annotation引用非空enum数组返回空数组 首次发现时的环境:JDK 1.8 首次发现所在项目:APIJSON 测试用例: public enum RequestRole { /**未登录 ...