关于python:python连接sql-server

37次阅读

共计 1636 个字符,预计需要花费 5 分钟才能阅读完成。

具体连贯、测试代码:

server 默认为 127.0.0.1,如果关上了 TCP 动静端口的须要加上端口号,如 ’127.0.0.1:1433′

user 默认为 sa

password 为本人设置的明码

database 为数据库名字

server = ‘127.0.0.1’
user = “sa”
password = “123456”
database = “pubs”
conn = pymssql.connect(server, user, password, database)

可简化为 conn = pymssql.connect(host=’localhost’, user=’sa’, password=’123456′, database=’pubs’)

cursor = conn.cursor()
cursor.execute(‘SELECT * FROM titles’)
print(cursor.fetchall() )

如果用 pandas 读取数据库

import pymssql
import pandas as pd
conn = pymssql.connect(‘IP 地址 ’,’ 账号 ’,’ 明码 ’,’ 数据库 ’)
sql_1 = “SELECT Id,creat_time from 表名 ”

利用 pandas 间接获取数据 ”

data = pd.read_sql(sql_1, conn)
conn.close()
print(data)
封装好的版本:

coding=utf-8

sqlserver 的连贯

import pymssql
class MSSQL:

def __init__(self,host,user,pwd,db):
    self.host = host
    self.user = user
    self.pwd = pwd
    self.db = db
def __GetConnect(self):
    """
    失去连贯信息
    返回: conn.cursor()
    """
    if not self.db:
        raise(NameError,[ 贝宝](https://www.gendan5.com/wallet/PayPal.html)"没有设置数据库信息")
    self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
    cur = self.conn.cursor()
    if not cur:
        raise(NameError,"连贯数据库失败")
    else:
        return cur
def ExecQuery(self,sql):
    """
    执行查问语句
    返回的是一个蕴含 tuple 的 list,list 的元素是记录行,tuple 的元素是每行记录的字段
    """
    cur = self.__GetConnect()
    cur.execute(sql)
    resList = cur.fetchall()
    #查问结束后必须敞开连贯
    self.conn.close()
    return resList
def ExecNonQuery(self,sql):
    """
    执行非查问语句
    调用示例:cur = self.__GetConnect()
        cur.execute(sql)
        self.conn.commit()
        self.conn.close()
    """
    cur = self.__GetConnect()
    cur.execute(sql)
    self.conn.commit()
    self.conn.close()

def main():

# host 默认为 127.0.0.1,如果关上了 TCP 动静端口的须要加上端口号,如 '127.0.0.1:1433'
# user 默认为 sa
# pwd 为本人设置的明码
# db 为数据库名字
ms = MSSQL(host='127.0.0.1',user="sa",pwd="123456",db="pubs")
resList = ms.ExecQuery("SELECT * FROM titles")
print(resList)

if name == ‘__main__’:

main()

正文完
 0