【SQL Server】python连接SQL Server数据库

SQL Server

Python 连接 SQL Server

创建连接

import pymssql #引入pymssql模块
import pandas as pd
# 结果集包含中文需要GBK编码
#connect = pymssql.connect('服务器名', '账户', '密码', '数据库名',charset="GBK") #服务器名,账户,密码,数据库名
mode = 'r' # r 读 w 写
if mode == 'r':
	self.conn = pymssql.connect(dbconfig['host'], dbconfig['username'], dbconfig['password'], dbconfig['service_name'], charset="GBK")
elif mode == 'w':
	self.conn = pymssql.connect(dbconfig['host'], dbconfig['username'], dbconfig['password'], dbconfig['service_name'])

if connect:
    print("连接成功!")

cursor = connect.cursor()   #创建一个游标对象,python里的sql语句都要通过cursor来执行
sql = "select 小区名称,城市,区县 from Project_gaode"
cursor.execute(sql)   #执行sql语句

fetchone

row = cursor.fetchone()  #返回结果数据的一行,返回一个单行的数据对象,row.

# 将SQL查询结果转换为DataFrame
df = pd.read_sql(sql, connect) 
connect.close()   #关闭数据库连接

fetchall

rows = cursor.fetchall() #获得所有数据,返回一个list对象,每行就是一个tuple元组。
connect.close()   #关闭数据库连接
#输出为DataFrame
df = pd.DataFrame(rows, columns=[x[0] for x in cursor.description])

execute

sql = "INSERT INTO XXX ...;"
cursor.execute(sql)   #执行sql语句
connect.commit()
affected = cursor.rowcount
connect.close()   #关闭数据库连接
print(affected)

异常

解决方法

use <DATABASENAME>
grant select on dbo.<TABLENAME> to public;

(8152, b'String or binary data would be truncated.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')

解决方法

# 创建连接时需要去除GBK编码格式
# pymssql.connect('服务器名', '账户', '密码', '数据库名',charset="GBK")
pymssql.connect('服务器名', '账户', '密码', '数据库名')
posted @ 2022-06-11 10:49  brucejiao  阅读(710)  评论(0编辑  收藏  举报