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('服务器名', '账户', '密码', '数据库名')