Форум сайта python.su
0
Друзья подскажите как выполнить запрос 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 “D
python/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 определить переменной ?
Отредактировано vitk (Сен. 2, 2019 13:59:08)
Офлайн
568
vitk
майкрософт sql сервер
vitk
import MySQLdb
from mysql.connector import errorcode
Офлайн
0
FishHookЯ сделал импорт под mssql с ним работаю, то просто модуль в импорте стоит
import pyodbc
Офлайн
568
vitk
А где у вас fetch, разве так читают из курсора? Покажите, по какой документации пример строили.
Офлайн
0
Уже разобрался, вот так у меня работает запрос, подскажите почему не опеределяет Key у меня колонка так называется мне нужно сделать Key = SiteGuid но когда добавляю то не работает запрос, получаю єту ошибку
Traceback (most recent call last):
File “D
python/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
Офлайн
0
Решил сам так
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!')
Офлайн