首页 > 编程语言 >Python工具箱系列(二十四)

Python工具箱系列(二十四)

时间:2023-01-29 11:31:27浏览次数:58  
标签:Python 数据库 SQL demodb user 二十四 工具箱 password democur

不管多少人黑微软,微软出品的大多数产品都能够深入人心,成为精品。在数据库领域,微软为专业人士提供SQL Server(简称mssql)。为日常办公人士提供Access与Excel这两款数据存储与分析的神器。

SQL Server是微软在数据库领域打造的旗舰产品,使用起来安全、稳定、可靠,并且对于SQL语言的语法与特性支持的非常好。长期以来由于微软敌视开源运动,所以SQL Server只能够在微软的Windows平台上运行。自从微软拥抱开源后,SQL Server能够运行在:

◆Windows平台上,这是自家平台,不用说肯定支持的最好

◆Linux平台上,笔者使用后也感觉非常流畅

◆各类云平台上,其中微软自家的Azure是首选

◆Docker中,非常方便进行小型部署、开发

SQL Server是微软的商业数据库管理系统,作为开发人员,可以选择其免费的“Developer”版本。强烈建议使用​​官网​​进行下载,安装界面如下图所示:

Python工具箱系列(二十四)_SQL

选择“基本”即可,随后就是微软最棒的简明安装过程,就可以轻松的在本地建立一个SQL Server服务器。安装完成后,为了方便操作,建议安装微软免费的管理软件——SQL Server Management Studio (SSMS)。安装过程也非常简单。安装成功后直接打开界面,连接数据库即可。

Python工具箱系列(二十四)_Server_02

如上图所示,如果不想使用Windows内置的身份验证(尤其是客户端与服务器端是不同的节点,或者操作系统跨平台),一定要选择“SQL Server和Windows身份验证模式",这一混合模式,否则无法登录。

为了能够访问SQL Server,首先安装相关包。

pip install pymssql

创建数据库与表

mssql默认的数据库为master,使用时需要创建新的数据库与表。这部分的概念与mysql/sqlite相类似。

import pymssql

host = 'LAPTOP-11TE8QTB'
user = 'sa'
password = '88488848'
dbname = 'demodb'

# 创建数据库
demodb = pymssql.connect(host=host, user=user, password=password,database='master')
democur = demodb.cursor()
demodb.autocommit(True)
democur.execute(f'create database {dbname};')
demodb.autocommit(False)
democur.close()
demodb.close()

# 创建数据库成功后创建表结构
demodb = pymssql.connect(
host=host, user=user, password=password, database=dbname)
democur = demodb.cursor()
sql_createtable = 'create table demotb(id int identity(1,1) primary key ,pm25 float not null)'
democur.execute(sql_createtable)

demodb.commit()
democur.close()
demodb.close()

代码与mysql的非常类似,但也有几点不同:

◆由于mssql的要求,创建数据库时使用了autocommit(True)与autocommit(False)。

◆创建能够自动增长的ID,不同的数据库语法几乎都不相同。mssql使用了identity关键字。

使用游标对数据库进行查询的过程与mysql非常类似,相关代码如下。

import random
import pymssql


host = 'LAPTOP-11TE8QTB'
user = 'sa'
password = '88488848'
dbname = 'demodb'


def fakedata(maxtimes):

# 连接数据库
demodb = pymssql.connect(
host=host, user=user, password=password, database=dbname)
democur = demodb.cursor()

# 插入模拟出来的数据。
for _ in range(maxtimes):
pm25 = random.uniform(0, 300)
insertsql = f'insert into demotb(pm25) values({pm25})'
democur.execute(insertsql)

demodb.commit()
democur.close()
demodb.close()


def querydata():

# 连接数据库
demodb = pymssql.connect(
host=host, user=user, password=password, database=dbname)
democur = demodb.cursor()

# 进行一个简单的查询,返回多个值
selsql = 'select pm25 from demotb where pm25 >50.0'
democur.execute(selsql)
for i in democur:
print(i)
demodb.commit()
democur.close()
demodb.close()


def queryresult():

# 连接数据库
demodb = pymssql.connect(
host=host, user=user, password=password, database=dbname)
democur = demodb.cursor()

# 进行一个简单的查询,返回多个值
selsql = 'select max(pm25) from demotb'
democur.execute(selsql)
result = democur.fetchone()
print(result)
demodb.commit()
democur.close()
demodb.close()


fakedata(10)
querydata()
queryresult()

笔者使用的mssql所在主机名为"LAPTOP-11TE8QTB",可以替换为ip地址。类似的,也可以使用pandas进行数据库的操作。

标签:Python,数据库,SQL,demodb,user,二十四,工具箱,password,democur
From: https://blog.51cto.com/shanxihualu/6025630

相关文章

  • Python定义全局变量的用法
    全局变量是编程语言中常见的一种变量,通过全局定义,可以是某对象函数创建,也可以是本程序任何位置创建,能够被本程序中的所有对象或函数进行引用,全局变量的定义有利于程序的变......
  • python 缓存函数结果,下次不会执行函数时直接获取结果[ lru_cache 、cache]
    学习路径:https://www.aiuai.cn/aifarm1963.htmlfromfunctoolsimportlru_cachefrompydanticimportBaseSettingsn=0classSettings(BaseSettings):envir......
  • python入门之str通用操作/索引/切片
    """通用操作str"""str01="二狗"str02="三叔"#字符串拼接str03=str01+str02#字符串累加str01+=str02print(str01)#重复生成元素print(str01*......
  • Python中的深拷贝与浅拷贝
    Python进阶篇-系列文章全篇......
  • python 运算符
    除法运算(/),整除运算(//),计算求余(%),(**)乘方运算,变量赋值(=),字符串有多种表现形式,用单引号('……')或双引号("……")标注的结果相同,反斜杠\用于转义   >>>17/3 #clas......
  • Python 内置界面开发框架 Tkinter入门篇 乙
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/2GFLTstDC7w6u3fTJxflNA本文大概 1685 个字,阅读需花 6 分钟......
  • Python之装饰器
    #装饰器功能说明"""python中的装饰器(decorator)一般采用语法糖的形式,是一种语法格式。比如:@classmethod,@staticmethod,@property,@xxx.setter,@wraps(),@fun......
  • Python之生成器
    """生成器说明:1、生成器一次只返回一个数据;2、yield把函数变成了一个生成器;3、生成器函数的执行过程看起来就是不断地执行->中断->执行->中断的过程;4、一开始,调用......
  • Python之高阶函数
    #高阶函数functoolsimportfunctools#遍历序列元素为参数依次应用到函数中,最终返回累计的结果n=functools.reduce(lambdax,y:x+y,[1,2,3,4,5])print(......
  • [Python] 用描述符实现复用@property方法
    1Python内置的@property机制弊端在于不方便复用不能把它所修饰方法中的逻辑,套用在同一个类中的其他属性上。例如,编写一个类记录分数classGrade:def__init__(s......