更多课程 选择中心


Python培训

400-996-5531

使用Python操作SQL Server数据库


如果有条件可以使用远程连接或者TeamViewer等工具,操作带GUI的数据库管理器,实施起来可以很省心。可以直接查看结果,模板化查询甚至提示语句错误等。

如果是使用linux本地或者ssh访问SQL Server数据库的,稍微麻烦点。可以使用sqlcmd作为替代工具。后面会介绍。

没有mysql一样的show database;命令,所以显示所有的数据库都比较麻烦。可以使用这条命令:select name from sysobjects where xtype='u'

SQL Server中各个系统表的作用

sysaltfiles    仅在主数据库 保存数据库的文件

syscharsets    仅在主数据库 字符集与排序顺序

sysconfigures  仅在主数据库 配置选项

syscurconfigs  仅在主数据库 当前配置选项

sysdatabases   仅在主数据库 服务器中的数据库

syslanguages   仅在主数据库 语言

syslogins      仅在主数据库 登陆帐号信息

sysoledbusers  仅在主数据库 链接服务器登陆信息

sysprocesses   仅在主数据库 进程

sysremotelogins 仅在主数据库 远程登录帐号

syscolumns     每个数据库 列

sysconstrains  每个数据库 限制

sysfilegroups  每个数据库 文件组

sysfiles       每个数据库 文件

sysforeignkeys 每个数据库 外部关键字

sysindexs      每个数据库 索引

sysmenbers     每个数据库 角色成员

sysobjects     每个数据库 所有数据库对象

syspermissions 每个数据库 权限

systypes      每个数据库 用户定义数据类型

sql cmd(sqlserver客户端也可以)

直接访问数据库:

sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DB

示例sqlcmd -S "127.0.0.1" -U "sa" -P "12345678"

遇到查询操作时提示“对象名无效”的情况:

可能因为没有选择数据库,或者数据库里没有该表。一定要跟上参数-d。进入执行模式之后可以输入自己的SQL语句。可以连续多条,命令最后以GO语句结尾,是SQL Server的语法。若要提高性能,请在一个 sqlcmd 会话中执行尽可能多的操作,而不是在一系列会话中来执行这些操作。

输入/输出选项-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage],用于指定输入和输出代码页。代码页页码是指定已安装的 Windows 代码页的数值。

代码页转换规则:

如果未指定代码页, sqlcmd 会将当前代码页同时用于输入文件和输出文件,除非输入文件为 Unicode 文件,在此情况下无需进行转换。

sqlcmd 自动识别 Big-endian Unicode 和 Little-endian Unicode 输入文件。 如果已指定 -u 选项,输出将始终为 Little-endian Unicode。

如果未指定输出文件,输出代码页将为控制台代码页。借助此方法,可以在控制台上正确显示输出。假定多个输入文件具有相同的代码页。可以将 Unicode 和非 Unicode 输入文件混合在一起。在命令提示符处输入 chcp 以验证 Cmd.exe 的代码页。

-i input_file[,输入_file2...]

标识包含一批 SQL 语句或存储过程的文件。可以指定要按顺序读取和处理的多个文件。文件名之间不要使用任何空格。sqlcmd 将首先检查所有指定的文件是否都存在。如果有一个或多个文件不存在, sqlcmd 将退出。-i 和 -Q/-q 选项是互斥的。

-i C:\<filename>

-i \\<Server>\<Share$>\<filename>

-i "C:\Some Folder\<file name>"

清空表

删除表:

delete from 表名

清除表中的所有数据、保留表结构( 清除表中所有行,保留表结构、与delete类似):

truncate table 表名

比delete速度快,效率高,使用的系统和事务日志资源少。

删除表(所有数据及表结构):

drop table 表名

pymssql库

如果使用pymssql库操作SqlServer连接,基本上就是一把梭。

基本的建立连接:

HOST = '127.0.0.1'

USER = 'USERNAME'

PW = 'PASSWORD'

DB = 'DBNAME'

conn = pymssql.connect(host=HOST, user=USER, password=PW, database=DB)

cursor = conn.cursor()

执行SQL语句(查询):

cursor.execute('SELECT * FROM mytable')

row = cursor.fetchone()

while row:

row = cursor.fetchone()

conn.close()

在操作执行SQL语句的函数.execute()的时候,传入语句不能临时进行拼接,必须是常量或者格式化的变量。可能是考虑注入等问题,故意设定的。

执行SQL语句(其他):

cursor.execute("INSERT INTO position VALUES (%s, %s)", (num, address))

conn.commit()

除了查询语句比较特殊,其他的语句一般都需要额外的使用.commit()进行数据提交。如果不提交,可以即便语句执行了,也没有结果返回。此外,连接一开始设定了自动提交属性,可以忽略这条。

达内每年输送10万+人才,18年来帮助80万学员高薪就业;协助16万家企业解决人才需求。拥有完善的就业保障体系,116万家招聘雇主合作企业。每天产生数千个招聘岗位,提供更多就业机会给到达内学员。找Python培训,选达内就对了!

版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:python测试中会反映什么问题?
下一篇:为大家收集了一些最常用的Python包

如何自学Python?

说一说python中的几个基础语法

为什么Python类语法应该不同?

0基础入门Python,3 个常识点必须先了解!

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省