Python14 - Pymssql(MS SQL 연동)
( cmd에서 ipconfig를 치면 ip주소를 포함한 주소를 알 수 있음 )
ORM은 rdb와 java를 연결해주는 툴
mysql, ms sql, maria db
db2 postage db
access
sqlite - 안드로이드에 주로 들어감..
------------------------------------------------------------------------------
[window]
Python과 ms sql 연동
pymssql 드라이버 설치는 cmd창에서
pip install pymssql
명령어로 install 해주는 게 간단하다.
제일 최신 버전으로 인스톨 된다.
# pymssql 패키지 import
import pymssql
# MSSQL 접속
conn = pymssql.connect(server="name", user="id", password="password", database="table_name", charset='utf8')
# Connection 으로부터 Cursor 생성
cursor = conn.cursor()
# SQL문 실행
cursor.execute('SELECT * FROM emp;')
# 데이타 하나씩 Fetch하여 출력
row = cursor.fetchone()
while row:
print(row[0], row[1])
row = cursor.fetchone()
# 연결 끊기
conn.close()
처음에는 버전이 맞지 않아서 import에 오류가 난다.
이클립스를 재부팅 시키고 좀 기다리면 PYTHONPATH 설정창이 나타난다.
실행시키면, 다시 오류가 남 (....- -)
Traceback (most recent call last):
File "src\pymssql\_pymssql.pyx", line 647, in pymssql._pymssql.connect
File "src\pymssql\_mssql.pyx", line 2109, in pymssql._mssql.connect
File "src\pymssql\_mssql.pyx", line 701, in pymssql._mssql.MSSQLConnection.__init__
File "src\pymssql\_mssql.pyx", line 1818, in pymssql._mssql.maybe_raise_MSSQLDatabaseException
File "src\pymssql\_mssql.pyx", line 1835, in pymssql._mssql.raise_MSSQLDatabaseException
pymssql._mssql.MSSQLDatabaseException: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist ()\nNet-Lib error during Unknown error (10061)\nDB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist ()\nNet-Lib error during Unknown error (10061)\n')
During handling of the above exception, another exception occurred:
구성관리자에서 TCP/IP 속성을 사용으로 바꿔야한다!
실행 시키면 SELECT 문 완성!
server에는 ip주소를 넣어도 된다.
fetchall : 전체를 가져온다.
fetchone : 배열을 하나씩 가져올 수 있다.
INSERT
# pymssql 패키지 import
import pymssql
# MSSQL 접속
conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
# Connection 으로부터 Cursor 생성
cursor = conn.cursor()
# SQL문 실행 (insert)
query = "INSERT INTO EMP VALUES('3','3','3','3')"
cursor.execute(query)
conn.commit()
# 연결 끊기
conn.close()
**
줄을 바꿔도 오류가 나지 않으려면 따옴표를 3개씩 써주면 된다
query = """INSERT INTO EMP VALUES('3','3','3','3')
"""
UPDATE
# pymssql 패키지 import
import pymssql
# MSSQL 접속
conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
# Connection 으로부터 Cursor 생성
cursor = conn.cursor()
# SQL문 실행
query = "UPDATE EMP SET e_id=4,e_name=4,sex=4,addr=4 WHERE e_id=3"
cursor.execute(query)
conn.commit()
# 연결 끊기
conn.close()
*******
# pymssql 패키지 import
import pymssql
# MSSQL 접속
conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
# Connection 으로부터 Cursor 생성
cursor = conn.cursor()
e_id = '3'
e_name = '6'
sex = '6'
addr = '6'
# SQL문 실행
sql = f"""
UPDATE EMP
SET
e_name = '{e_name}',
sex = '{sex}',
addr = '{addr}'
WHERE
e_id = '{e_id}'
"""
cursor.execute(sql)
conn.commit()
# 연결 끊기
conn.close()
f {} 를 써주는 것이 직관적이라 좋다.
print(cursor.rowcount)
- rowcont 행의 수를 출력한다.
DELETE
# pymssql 패키지 import
import pymssql
# MSSQL 접속
conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
# Connection 으로부터 Cursor 생성
cursor = conn.cursor()
# SQL문 실행
query = "DELETE FROM EMP WHERE e_id=3"
cursor.execute(query)
conn.commit()
# 연결 끊기
conn.close()