加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 云计算 > 正文

借助Python操作SQL Server数据库

发布时间:2022-07-16 15:41:19 所属栏目:云计算 来源:互联网
导读:如果有条件可以使用远程连接或者TeamViewer等工具,操作带GUI的数据库管理器,实施起来可以很省心。可以直接查看结果,模板化查询甚至提示语句错误等。 如果是使用linux本地或者ssh访问SQL Server数据库的,稍微麻烦点。可以使用sqlcmd作为替代工具。后面会
  如果有条件可以使用远程连接或者TeamViewer等工具,操作带GUI的数据库管理器,实施起来可以很省心。可以直接查看结果,模板化查询甚至提示语句错误等。
 
  如果是使用linux本地或者ssh访问SQL Server数据库的,稍微麻烦点。可以使用sqlcmd作为替代工具。后面会介绍。
 
  没有mysql一样的show database;命令,所以显示所有的数据库都比较麻烦。可以使用这条命令:select name from sysobjects where xtype='u'
 
  SQL Server中各个系统表的作用
 
  sysaltfiles    仅在主数据库 保存数据库的文件
 
  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 代码页的数值。
 
 
  -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速度快,效率高,使用的系统和事务日志资源少。
 
 
  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()进行数据提交。如果不提交,可以即便语句执行了,也没有结果返回。此外,连接一开始设定了自动提交属性,可以忽略这条。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读