c#连接远程sqlserver_使用Python操作SQL Server数据库

c5ad39ab72ca7492cbe9b1f553fbacd3.png 0ca94359a54a4ec4772c3a4a184a0107.png

先说一下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:\-i \\\\-i "C:\Some Folder\"  

清空表

删除表:

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()进行数据提交。如果不提交,可以即便语句执行了,也没有结果返回。此外,连接一开始设定了自动提交属性,可以忽略这条。

   - end -  

696948133e6cbaca5c9b1feeb9629aab.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值