CenoOS连接 SQL Server

news2024/11/25 15:00:04

目录

  • 1、问题:
  • 2、解决步骤
  • 3、拓展
    • 3.1 常用查询
    • 3.2 SQL Server 语句规则
    • 3.3 python调用

1、问题:

连接:Provider=SQLOLEDB.1;Persist Security Info=False;User ID=XXX;password=XXXXX;Initial Catalog=XXXXX;Data Source=XXXXX;

解析:

示列Column 2
User ID数据库的用户名
password数据库的密码
Initial Catalog数据库账号
Data Sourcehost

2、解决步骤

按照以下步骤进行:

  1. 下载 FreeTDS 源代码包:

    wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.3.18.tar.gz
    
  2. 解压源代码包:

    tar xzf freetds-1.3.18.tar.gz
    
  3. 进入解压后的目录:

    cd freetds-1.3.18
    
  4. 配置和编译 FreeTDS:

    ./configure --prefix=/usr/local --with-tdsver=7.4 --enable-msdblib
    make
    sudo make install
    

    这将使用指定的选项配置和编译 FreeTDS,并将其安装到 /usr/local 目录下。

  5. 配置 ODBC 驱动程序:

    创建 odbcinst.ini 文件并编辑它:

    sudo vi /etc/odbcinst.ini
    

    在文件中添加以下内容,以配置 FreeTDS 驱动程序:

    [FreeTDS]
    Description = FreeTDS
    Driver = /usr/local/lib/libtdsodbc.so
    

    保存并关闭文件。

  6. 配置 ODBC 数据源:

    创建 odbc.ini 文件并编辑它:

    sudo vi /etc/odbc.ini
    

    在文件中添加你的数据源配置,例如:
    userdb换成自己的数据库

    [MyDataSource]
    Driver = FreeTDS
    Server = 10.16X.XXX.XX
    Port = 1433
    Database = userdb
    TDS_Version = 8.0
    
示列Column 2
10.16X.XXX.XX换成自己的ip
userdb换成自己的数据库

保存并关闭文件。

  1. 配置环境变量:

    打开 .bashrc 文件:

    vi ~/.bashrc
    

    在文件末尾添加以下行:

    export ODBCSYSINI=/etc
    

    保存并关闭文件。

    为了使环境变量生效,运行以下命令:

    source ~/.bashrc
    
  2. 验证配置:

    运行以下命令来验证 ODBC 驱动程序和数据源的配置是否正确:

    isql -v MyDataSource username password
    

在这里插入图片描述

这将使用你配置的数据源连接到数据库。如果连接成功,将显示 SQL 命令提示符SQL>,输入quit退出。

3、拓展

3.1 常用查询

一旦你使用 isql -v MyDataSource username password 命令成功进入数据库的命令行界面,你可以使用 SQL 查询语句来检索和操作数据。

以下是一些常用的 SQL 查询语句示例:

  1. 列车所有的表

    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
    
  2. 查询所有数据:

    SELECT * FROM your_table;
    

    your_table 替换为你想要查询的实际表名。

  3. 查询特定列的数据:

    SELECT column1, column2 FROM your_table;
    

    column1column2 替换为你想要查询的实际列名。

  4. 使用条件查询数据:

    SELECT * FROM your_table WHERE condition;
    

    your_table 替换为表名,并将 condition 替换为你的查询条件,例如 column = value

  5. 对结果进行排序:

    SELECT * FROM your_table ORDER BY column;
    

    your_table 替换为表名,并将 column 替换为你希望按其进行排序的列名。

  6. 使用聚合函数计算统计值:

    SELECT COUNT(*) FROM your_table;
    SELECT SUM(column) FROM your_table;
    SELECT AVG(column) FROM your_table;
    

    your_table 替换为表名,并将 column 替换为你想要计算统计值的列名。

  7. 限制返回数量

    SELECT TOP 4 * FROM your_table;
    

这只是一些基本的查询示例。你可以根据你的实际需求编写适当的 SQL 查询语句来检索和操作数据。

isql 命令行界面中,你可以直接输入以上 SQL 查询语句,并按 Enter 键执行。结果将以表格形式显示在命令行界面上。

3.2 SQL Server 语句规则

在 SQL Server 中,以下是一些常见的语句规则:

  1. 语句必须以分号 (;) 结尾,尤其是当多个语句在同一行上时。

  2. SQL 语句不区分大小写,但是标识符(例如表名、列名、变量名等)是区分大小写的。

  3. SQL 语句可以跨多行书写,但在语句的每个子句之间应该使用空格或换行符进行分隔,以提高可读性。

  4. 注释可以使用 -- 进行单行注释,或使用 /* ... */ 进行多行注释。

  5. SELECT 语句用于查询数据,INSERT 语句用于插入数据,UPDATE 语句用于更新数据,DELETE 语句用于删除数据。

  6. WHERE 子句用于指定条件,以筛选出满足条件的数据。

  7. ORDER BY 子句用于对结果集进行排序。

  8. GROUP BY 子句用于对结果集进行分组。

  9. JOIN 子句用于将多个表关联起来,以获取相关联的数据。

  10. 子查询是嵌套在其他查询中的查询,用于在一个查询中使用另一个查询的结果。

  11. 存储过程是一系列预定义的 SQL 语句,可作为单个单元执行。

  12. 触发器是与表相关联的数据库对象,用于在表上发生特定事件时自动执行一系列操作。

3.3 python调用

import pyodbc

# 定义连接字符串
conn_str = 'DSN=MyDataSource;UID=username;PWD=password'

# 连接到数据源
conn = pyodbc.connect(conn_str)

# 创建游标
cursor = conn.cursor()

# 这个可以遍历数据库中的所有数据表
cursor.execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'")
tables = cursor.fetchall()

for table in tables:
    print(table[0])


# 执行查询语句
cursor.execute("SELECT * FROM your_table")

# 获取查询结果
results = cursor.fetchall()

# 遍历结果并打印
for row in results:
    print(row)

# 关闭游标和连接
cursor.close()
conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python屏幕截图:完美的方法记录你的屏幕

Python屏幕截图:完美的方法记录你的屏幕 Python作为一种高级编程语言,被广泛用于开发各种应用程序和游戏,其中之一就是屏幕截图。 在本文中,我们将介绍使用Python进行屏幕截图的方法和技巧。 什么是屏幕截图? 屏幕截…

第六十八天学习记录:高等数学:导数(宋浩板书)

导数是微积分中的一个概念,描述了函数在某一个点上的变化率。具体地说,函数 f ( x ) f(x) f(x)在 x a xa xa处的导数为 f ′ ( a ) f(a) f′(a),表示当 x x x在 a a a处发生微小的变化 Δ x \Delta x Δx时, f ( x ) f(x) f(x)对…

Golang每日一练(leetDay0090) 运算优先级、有效字母异位词

目录 241. 为运算表达式设计优先级 Different Ways to Add Parentheses 🌟🌟 242. 有效的字母异位词 Valid Anagram 🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 …

Vector源码

介绍 Vector是矢量队列,继承于AbstractList,实现了List, RandomAccess, Cloneable和Serializable接口Vector继承了AbstractList,实现了List接口,所以它是一个队列,支持相关的添加、删除、修改、遍历等功能Vector实现了…

chatgpt赋能python:Python的强制语句缩进解析

Python的强制语句缩进解析 什么是语句缩进 在其他编程语言中,我们通过使用花括号或者一些其他的符号来区分控制语句的范围。但在Python中,我们使用缩进来实现这个目的。这意味着任何控制结构的主体都必须按照要求正确缩进。 为什么Python强制要求使用…

【Java】JavaWEB核心要点总结:63

文章目录 1. JSP 和 Servlet 有什么区别2. JSP有哪些内置对象 分别是什么3. 详细讲解cookie session token4. 如果客户端禁止 了cookie ,session 还能用吗5. session 的工作原理 1. JSP 和 Servlet 有什么区别 JSP(Java Server Pages)和Servl…

读改变未来的九大算法笔记06_图形识别

1. 人工智能研究人员在过去几十年中学到的最重要的教训之一 1.1. 看似智能的行为有可能从看似随机的系统中浮现出来 1.2. 如果我们有能力进入人脑,研究神经元之间连接的强度,其中绝大部分连接都会表现得很随机 1.3. 当作为集合体行动时,这…

javaScript蓝桥杯-----全球新冠疫情数据统计

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 新冠疫情席卷全球,在此期间有很多免费的 API 和⽹站为⼈们提供了各个国家疫情数据的查询功能,这些免费公开的数据体现出了互联⽹作为信息媒介的优越性,帮助全球⼈⺠更好的了解⼀线疫…

电路模型和电路定律(3)——“电路分析”

小雅兰期末加油冲冲冲!!! 复习之前的内容: 这样的连接方式是不可以的: 两个电压源,电压值不相同,是不能并联的 两个电流源,电流值不相同,是不能串联的 电流源也不能开…

浅谈Zuul、Gateway

一、Zuul Zuul是通过Servlet来实现的,Zuul通过自定义的ZuulServlet(类似于Spring MVC的DispatcherServlet)来对请求进行控制(一系列过滤器处理Http请求)。 所有的Request都要经过ZuulServlet的处理,三个核心的方法preRoute(),rou…

时钟频率的配置-DG32

时钟频率的配置-DG32 HXTAL:高速外部时钟,4到32MHz的外部振荡器,可为系统提供精确的主时钟。带有特定频率的晶体必须靠近两个HXTAL的引脚。和晶体连接的外部电阻和电容必须根据所选择的振荡器来调整; LXTAL:低速外部…

chatgpt赋能python:Python开发桌面应用全面介绍

Python开发桌面应用全面介绍 Python是一种非常万能的编程语言,也逐步发展成为一种适用于开发各种桌面应用程序的语言。Python开发桌面应用的优点是它可以快速开发,易于阅读和使用,同时具有很高的可扩展性和可维护性,因此越来越多…

chatgpt赋能python:Python开立方:简单快捷的计算方法

Python开立方:简单快捷的计算方法 如果你是一位程序员或者是一个正在学习编程的初学者,那么你一定会用到Python这个编程语言。Python作为一门多用途的编程语言,它有着简单易学、高效快捷、优雅简洁等优点。同时,在数据分析、人工…

Keras-3-实例2-多分类问题

1. 多分类问题: 1.1 路透社数据集加载 路透社数据集由路透社在1986年发布,包含46个不同的主题:某些主题样本较多,某些较少,但是训练集中每个主题都至少含有10个样本。 from keras.datasets import reuters(train_da…

ViewOverlay-加蒙层真的一种实现方式

一、ViewOverlay能实现什么? 在Android中,ViewOverlay是一个特殊的视图层,可以在一个视图的上方添加和管理附加的视图层,而不会干扰原始视图的布局和交互。它提供了一种方便的方式来在运行时添加、移除或修改视图层,而…

chatgpt赋能python:Python嵌入SEO

Python嵌入SEO Python是一种高级编程语言,由于其简单易学和广泛应用的特点,已经成为了许多工程师的首选语言。随着互联网发展的趋势,现代的SEO已经不再是简单的关键词填充和链接堆积,而是需要更复杂的优化方式,这时候…

Sentinel在k8s部署

一、Sentinel Dashboard在k8s部署 官方jar包下载 由于sentinel dashboard官方没有提供镜像下载,需从sentinel官方下载sentinel dashboard的jar包,这里选择1.8.0进行下载。注意与springboot版本的兼容性。 打镜像并上传自己镜像仓库 在自己项目中添加…

mac(M1)芯片安装Stable-diffusion-webui

背景:听同事说这个都是在GPU上跑的,cpu跑这个比较费劲。我本地mac跑这个,也是为了调试一些相关的插件和api。为了开发方便点。当然确实提吃内存的。 目录 一、Stable-diffusion-webui 项目地址和官方安装方式 二、自己的安装方式 2.1、更…

自定义注解,基于redis实现分布式锁

一、如何实现自定义注解 1.1、注解的基础知识 实现自定义注解其实很简单,格式基本都差不多。也就参数可能变一变。 Retention:取值决定了注解在什么时候生效,一般都是取运行时,也就是RetentionPolicy.RUNTIME。 Target&#xff…

Unreal5 第三人称射击游戏 射击功能实现2

上一篇我们实现了角色射击相关的动画以及切换逻辑,并将武器相关的模型添加到角色身上。 这一篇开始制作武器相关的功能。 制作子弹父类 首先创建一个actor类,命名为BP_Bullet,这个作为子弹的通用父类,在里面创建子弹通用的功能实…