Wpis z mikrobloga

mam dosłownie fragment kodu żeby zrobić inserta do bazy danych w #python kod wykonywany w spyderze robi tego inserta poprawnie, natomiast gdy wrzuce skrypt na #openwrt i ustawie cronjoba to ten skrypt sie nie wykonuje. w logach jest ze cron go puścił, ale efektow w bazie nie ma. dodawalem biblioteke python z repo w openwrt, dodawalem tez w ten sam sposob biblioteke pyodbc ktora mam zapisana w skrypcie i dalej nic. nie wiem juz co moze byc #naukaprogramowania #komputery #domoticz #linux
kod wyglada tak:

#!/etc/domoticz/scripts/python
#import pyodbc
server = 'tcp:xxx.xxxx.xxx.pl'
database = 'xxxxxxx'
username = 'xxxxxxxx'
password = 'xxxxxxxxx'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("insert into tabela(a, b, c) values (1,2,3)")
cnxn.commit()
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

pyodbc


@rosso_corsa: no ok, ale próbowałeś ten skrypt odpalić ręcznie z shella w openwrt? Zgaduję, że brakuje ci jakiś libów. I zamiast pythona mógłbyś użyć lua albo nawet sh z poleceniem w środku do inserta sql.
  • Odpowiedz
wolalbym dojsc dlaczego


@rosso_corsa: napisałem ci jak zdebugować. Uruchom w bashu/ash przez ssh na routerze i zobacz czy działa.

przechowywanie hasła do bazy w skrypcie to niezłe tam macie security


@PortowySzczur: Fakt, bardzo zła praktyka ale OP to chyba sobie w domu klepie.
  • Odpowiedz
@rosso_corsa: Jak ci pisałem. Często biblioteki do pythona korzystają z natywnych bibliotek w systemie np liby do postgresa w pythonie korzystają z klienta postgresa w systemie. Musisz mieć ten odbc driver w systemie a pewnie i tak jeszcze wyjdzie więcej jaj po drodze bo w końcu to baza mssql xd
https://openwrt.org/packages/pkgdata_lede17_1/pgsqlodbc

niech od razu się uczy dobrych praktyk bo z czymś takim kiedyś zrobi niezły fuckup


@PortowySzczur: Soory
  • Odpowiedz
@rosso_corsa: na linuxie instalacja pyodbc nie jest taka prosta jak na windowsie, musisz doinstalować odpowiednią libkę do systemu, np na ubuntu:

„On Ubuntu, you'll need to install unixodbc-dev:

sudo apt-get install
  • Odpowiedz