파이썬-MSSQL 연동 및 한글깨질때
파이썬에서 MS-SQL Server와 연동하려면 pymssql 라이브러리를 사용해야 합니다.
pymssql 라이브러리 설치
#pymssql 설치
pip install pymssql
MS-SQL Server 연결
import pymssql
conn = pymssql.connect(
server='MSSQL_SERVER_IP', # MS-SQL Server IP 주소 또는 호스트 이름
port=1433, # MS-SQL Server 포트 번호 (기본값: 1433)
user='MSSQL_USER', # MS-SQL Server 로그인 계정 이름
password='MSSQL_PASSWORD', # MS-SQL Server 로그인 계정 비밀번호
database='MSSQL_DATABASE' # 연결할 MS-SQL Server 데이터베이스 이름
)
커서 생성 및 쿼리 실행
cursor = conn.cursor()
cursor.execute("SELECT * FROM 테이블명")
#쿼리 결과 처리
for row in cursor.fetchall():
print(row)
커서 및 연결 종료
cursor.close()
conn.close()
쿼리 매개변수
쿼리 문장에서 매개변수를 사용하려면 format()
문자열 함수 또는 pymssql
의 param
스타일러를 사용할 수 있습니다.
# format() 문자열 함수 사용
cursor.execute("SELECT * FROM 테이블명 WHERE id = %d" % id_값)
# pymssql param 스타일러 사용
cursor.execute("SELECT * FROM 테이블명 WHERE id = @id", id=id_값)
# insert 이렇해 간단히도 가능합니다.
cnxn = pymssql.connect('아이피주소' , '아이디', '패스워드', 'db명')
cursor = cnxn.cursor()
sql= "INSERT 테이블명 (필드1,필드2,필드3,필드4) values ('값1','값2','값3,'값4')"
cursor.execute(sql)
cnxn.commit()
cnxn.close()
트랜잭션 처리
트랜잭션은 데이터베이스 시스템에서 여러 작업을 하나의 작업으로 묶어 처리하는 것을 의미합니다. 트랜잭션을 사용하면 데이터 무결성을 보장하고 데이터베이스 오류 발생 시 롤백하여 데이터 손실을 방지할 수 있습니다.
# 커서 생성
cursor = conn.cursor()
try:
# 트랜잭션 시작
conn.begin()
# 쿼리 실행 (여러 개의 쿼리 실행 가능)
cursor.execute("쿼리1")
cursor.execute("쿼리2")
conn.commit()
except Exception as e:
# 에러 발생 시 롤백
conn.rollback()
raise e
# 커서 및 연결 종료
cursor.close()
conn.close()
[Tip] Ms-sql 한글 깨질때
특정한글 필드에 내용을 가지고 올때 한글이 깨져서 나올때 가 있습니다. 캐릭터셋을 변경해주면 됩니다.
#예1
cnxn = pymssql.connect('아이피주소' , '아이디', '패스워드', 'db명',charset='cp949')
#예2
...
wcom = row[0]
wcom = wcom.encode('ISO-8859-1')
com=wcom.decode('euc-kr')