(pyCharm)pymssql远程连接sql server以及相关语法介绍
pymssql是什么
pymssql是python的一个第三方库,是用来连接sql server数据库并对库中数据进行操作的一个工具。
一、测试环境
两台电脑,windows10系统,pycharm软件。
二、pymssql下载
1、打开终端
按win+R组合键打开“运行”对话框,输入cmd打开终端。
2、输入pip install pymssql下载安装pymssql(前提是电脑已经安装了python,若没安装请自行百度教程安装一个)
3、稍等片刻即可下载完毕并自动安装,关闭终端。
三、实现连接
1、关闭两台电脑的防火墙,确保两台电脑处于同一局域网内。
2、打开第一台电脑的sql server,登录并创建数据库test,新建表userInfo。
3、打开第二台电脑上的pycharm软件,新建工程。输入如下连接语句并运行:
import pymssql
#创建连接
conn = pymssql.connect(
server='第二台电脑ip',
port='sql server的tcp/ip动态端口号',
user='sql server登陆时用的用户名',
password='sql server登录账号对应的密码',
database='所要连接的数据库名'
)
if conn:
print("连接成功")
conn.close()#关闭连接
注意:ip地址分为以太网的和无线局域网的,两种IP不同,连接时需要根据实际情况选择。如果两台电脑都连接的是WiFi,则选择无线局域网对应的IP,连接网线的就选择以太网对应的IP。IP与tcp/ip动态端口号会变,如果之前能连接上,现在却连不上了,那么请检查IP和端口号是否正确。
(一)如何查看电脑的IP
1、打开终端输入ipconfig,回车
(二)如何查看sql server的tcp/ip动态端口号
1、打开计算机管理器(G)
win+X,点击计算机管理器
2、(如图2所示)点击服务和应用程序–>SQL Server配置管理器–>SQL Server网络配置–>SQLEXPRESS协议–>右键TCP/IP–>属性((如图2所示)如果TCP/IP的状态显示为禁用,那么动态端口号为空后者为0,这时需要右键启动TCP/IP,然后点击SQL Server服务,右键SQL Server (SQLEXPRESS)重新启动,这样TCP/IP启动才生效,一般情况下就可以看到动态端口号,若还没有,二般情况下需要重启电脑,或者第二天再看看吧,会有的,具体什么原因我也不知道,就离谱)
图 1
图 2
3、选着IP地址,滑倒最底可以看到TCP动态端口号。
四、pymssql常用操作
1、创建游标cursor = conn.cursor()
。
(注:这里conn是我们连接时得到的对象;cursor()方法时pymssql的内置创建游标的方法;cursor是我们创建的游标)
2、设置提交事物:
自动提交conn.autocommit(True)
。如果不设置自动提交,则每次调用execute()和executemany()方法后都需要调用一次conn.commit()
方法进行事物提交,不然sql语句执行不成功。
3、查询cursor.execute("SELECT * FROM 表名")
例如:cursor.execute('SELECT 入场时间 FROM 实时监控 WHERE 车牌号=%s', carboard)
(注:cursor为我们之前创建好的游标,execute()方法为pymssql内置的方法)
4、插入cursor.executemany("INSERT INTO 表名 VALUES(参数占位符)",[(参数列表)])
例如:cursor.executemany("INSERT INTO 实时监控 VALUES (%s,%s,%s,%s,%s)", [(car_number, plate_color, curr_time,x,y)])
(注:executemany()方法为pymssql内置的方法,可平批量插入数据)
5、修改cursor.executemany("update 表名 set 要修改属性名=占位符,WHERE 属性名=占位符",[(参数列表)]
例如:cursor.executemany("update 实时监控 set 车牌号=%s, WHERE 车牌号=%s", [(charge, carboard)])
6、删除cursor.execute("delete 表名 where 属性名=占位符",占位符处对应的值)
代码示例:
import pymssql
car_number='京A-12B45'
plate_color='蓝'
carboard='京A-12B46'
curr_time='2021-07-06 15:51:20'
def connectsql():
conn = pymssql.connect(
server='10.33.43.38',
port='49678',
user='user2',
password='123',
database='ParingLot'
)
return conn
def monney():
conn = connectsql()#创建连接
conn.autocommit(True)#设置事件自动提交
if conn:
print("连接成功")
cursor = conn.cursor()#创建游标
#修改车牌号
cursor.executemany("update 实时监控 set 车牌号=%s, WHERE 车牌号=%s", [(charge, carboard)])
#插入数据
cursor.executemany("INSERT INTO 实时监控 VALUES (%s,%s,%s)", [(car_number, plate_color, curr_time)])
#查询数据
cursor.execute("SELECT * FROM 实时监控")
#row = cursor.fetchall()
#row = cursor.fetchone()
#按行输出
for row in cursor:
print(row)
#断开数据库连接
conn.close()
if __name__ == '__main__':
monney()
五、可能遇到的一些问题
总是连接报错,有两种可能
1、语法有错,或者参数有错,解决方法就是错的地方改正就好了(具体什么错看个人)
2、配置问题,解决方法如下
(1)打开sql server数据库,查看是否允许远程连接
(2)打开sql server配置管理器,选择SQLEXPRESS的协议,右键TCP/IP选择属性,选择IP地址,将里面的所有IP1–IP9最后一项都改为是,然后重启SQL Server(SQLEXPRESS)(这里的东西上文都有提到在哪里,这里不再赘述),现在尝试连接,若不能连接,请看下面一步
(3)在防火墙创建一个新的TCP入站规则
步骤如下:
1、打开控制面板,找到Windows Defender 防火墙打开
2、选择高级设置
3、选着入站规则–>新建规则
4、选着端口–>下一步
5、选择TCP–>特定本地端口–>填1433(一般默认端口都是1433)–>下一步
6、允许连接–>下一步
7、默认勾选就好–>下一步
8、取个名–>填写相应的说明方便我们知道这个规则是我们自己创建的(可不写)–>完成
9、重启电脑(新建规则只有在重启后才生效)
PS:如果对您有帮助,点个赞呀,谢谢