Найти - Пользователи
Полная версия: Выполнить sql запрос на сервер mssql
Начало » Python для новичков » Выполнить sql запрос на сервер mssql
1
vitk
Друзья подскажите как выполнить запрос UPDATE на майкрософт sql сервер

Вот мой кусок кода

Мне нужно сделать апдейт 3-х колонок Key, Value, Encrypted ID колонки нету только нумерация 1
import pypyodbc
import requests
import json
import urlopen
import argparse
import configparser
import mysql.connector
import MySQLdb
from mysql.connector import errorcode

config = configparser.ConfigParser()
config.read('database.ini')
headers = {'Content-Type': ‘application/json’}
database = config
username = config
password = config
server = config
import pypyodbc
import pandas as pd
import pyodbc
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
Server=db.windows.net;”
“Database=python-vps701;”
“uid=user;pwd=5RNGdfsdfwefgPgeXYN”)

cursor = conn.cursor()
cursor.execute(“UPDATE dbo.SiteSettings SET Value = ‘66668888rrrrrr’ ,Encrypted = ‘False’ WHERE 1=1;”)
for row in cursor:
print(row)


Получаю эту ошибку
Traceback (most recent call last):
File “Dpython/db-vps/db-vps70.py”, line 29, in <module>
for row in cursor:
pyodbc.ProgrammingError: No results. Previous SQL was not a query.

Process finished with exit code 1


Как еще можно передать в запрос UPDATE переменные, например Value определить переменной ?
FishHook
vitk
майкрософт sql сервер
vitk
import MySQLdb
from mysql.connector import errorcode


майкрософт sql сервер и MySQL они даже не братья, это дальние родственники, никак с помощью MySQLdb у вас не выйдет работать с БД MS SQL Server
vitk
FishHook
import pyodbc
Я сделал импорт под mssql с ним работаю, то просто модуль в импорте стоит

import pyodbc

Коннект такой
conn = pyodbc.connect
FishHook
vitk
А где у вас fetch, разве так читают из курсора? Покажите, по какой документации пример строили.
vitk
Уже разобрался, вот так у меня работает запрос, подскажите почему не опеределяет Key у меня колонка так называется мне нужно сделать Key = SiteGuid но когда добавляю то не работает запрос, получаю єту ошибку

Traceback (most recent call last):
File “Dpython/db-vps/db-vps70.py”, line 23, in <module>
with cursor.execute(tsql, ‘SiteGuid’, ‘4534534xxddxxxxrrr’, ‘False’, ‘1’):
pyodbc.ProgrammingError: ('42000', " Incorrect syntax near the keyword ‘Key’. (156) (SQLExecDirectW); Statement(s) could not be prepared. (8180)")

import pypyodbc
import pandas as pd
import pyodbc

config = configparser.ConfigParser()
config.read('database.ini')
headers = {'Content-Type': ‘application/json’}
database = config
username = config
password = config
server = config
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
#Update Query
print ('Updating Location for SiteGuid')
tsql = “UPDATE SiteSettings SET Key = ?, Value = ?, Encrypted = ? WHERE 1 = ?”
with cursor.execute(tsql, ‘SiteGuid’, ‘4534534xxddxxxxrrr’, ‘False’, ‘1’):
print ('Successfully Updated!')

Документация
https://sqlchoice.azurewebsites.net/en-us/sql-server/developer-get-started/python/windows/step/2.html
vitk
Решил сам так

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
#Update Query
print ('Updating Location for SiteGuid')
tsql = “INSERT INTO dbo.SiteSettings VALUES (?,?,?);”
with cursor.execute(tsql, ‘SiteGuid’, ‘3er5’, ‘False’):
print ('Successfully Updated SiteSettings Table!')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB