前几天有一个业务,用sqlserve实现一个医疗系统
基础页面部分,我使用两个比较好看的免费模板实现了登录注册和页面展示
(超级好看的登录注册页:6个超好看登录页面html)
健康医院网页设计
页面展示页
当然,今天的重点不是以上,而是谈谈sqlseve在pycharm中的连接和使用
我直接进行了连接,一直告诉我一个错误
[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。 ClientConnectionId:e7e03488-9398-4e20-ba95-86733053fd33
The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12].
Incorrect driver and/or database URL specified.
这个名字一听就挺好的,我直接使用了他,结果发现它能获取几乎所有数据库表,唯独我需要的表他没办法获取,一直处于该表为空的状态
老实讲,我在navicat和本地的sqlserve上都连接上了该表:不然我都该怀疑这个表是不是有问题了
答案是:pycharm有自动代码生成,我甚至不需要自己写代码,只需要操作,就可以获得操作代码,治愈我为什么需要代码,因为我之前并不知道,sqlserve的代码语法和mysql其实是一样的,唯一的区别就是套了几层库
一般的数据库就是一个单词,而SQL serve的长这样:zyxz.dbo.doc_date,甚至在官网本地sqlserve软件提取代码,得到了这样的语句:
SELECT TOP (1000) [doc_id]
,[doc_name]
,[doc_date_fee]
FROM [zyxz].[dbo].[doc_datefee]
这很不让人迷糊
驱动还是使用最初的那个,而不是jdts(虽然我感觉这小子不错,但是确实是把我最需要的卡住了)
然后在advanced页面添加如下参数,并且在对应路径下创建同名文件(路径非必须同下)
-Djava.security.properties=d:\emp\my.java.security
然后这个sqlserve完美连接
不得不说,这个过程是艰难的,最后我得到的结论也让我很震撼:sqlserve看起来困难的表象之下,其实是和所有数据库一样的内核,一样的sql语句(我以前以为那些括号是必须,那个top也是要有的)
结果后来我尝试着用和mysql一样的sql语句,完美运行,那时候我感觉自己被自己的恐惧所吓到了,当你认为一个东西困难的时候,你会找理由去印证他,事实是,难不难,做完之后才知道
如果没有这个就安装一下
下面是一个查询案例
import pymssql
connect = pymssql.connect('sqlserve服务器地址', '用户名', '密码', '数据库名')
cursor = connect.cursor()
# 查询所有类型
sql = """
SELECT distinct p.name
FROM zyxz.dbo.doc_info p
where doc_id=N'{}'
""".format(doc_id)
cursor.execute(sql)
name = cursor.fetchone()[0]
cursor.close()
connect.close()
如果要对数据库进行操作
connect = pymssql.connect('sqlserve服务器地址', '用户名', '密码', '数据库名')
cursor = connect.cursor()
# 查询所有类型
sql = '''
UPDATE zyxz.dbo.pat_reservation_info
SET service_situation = 1
WHERE pat_name LIKE N'{}' ESCAPE '#' AND doc_name LIKE N'{}' ESCAPE '#';
'''.format(reqeust.GET.get('user_name'), reqeust.GET.get('doc_name'), )
cursor.execute(sql)
connect.commit()
cursor.close()
connect.close()
可以看到,和普通的mysql和sqlite没有什么区别,唯一的区别可能是,这么连接比较麻烦
我尝试过封装函数,但是如果需要使用多次,不建议封装一整个函数反复进行连接和关闭(浪费时间)
也不建议在全局打开连接:这样我其他地方就访问不了了
所以老老实实的这样连接关闭(封装一个连接的函数,一个关闭的函数),就挺好的
对于未知的东西:尤其这玩意儿百度用的人都少,不要害怕
作为程序员,做一些别人从来没做过的事情都是有可能的,一些新技术出来的时候,我们要勇敢争做第一人,那些少有人读的api文档,也要勇于翻阅,正因为你能做别人做不到的事,你才不会被别人所替代