Toon posts:

Nano interpreteert multiline quotes niet goed (python)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een stuk python code waarin een aantal SQL queries tussen ''' staan.
Als ik deze file via SFTP open in Notepad++ is er niets aan de hand maar wanneer ik de file via een terminal (SSH) in Ubuntu of OSX open dan snapt Nano de werking van de ''' niet helemaal. Of het stuk code tussen de quotes wordt niet uitgequote(is dat een woord?) of een hele serie code na de ''' wordt onterecht uitgequote.

Overigens werkt de code prima dus het zal puur aan de visuele interpretatie in Nano liggen.
Ik zou natuurlijk altijd nog over kunnen stappen naar een andere editor zoals VIM of Emacs maar dat heeft in de eerste instantie niet mijn voorkeur.

Dit voorbeeld laat een correct resultaat zien, in incorrecte gevallen is de code na de sluitende ''' uitgequote.
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
else:
    sn=self.ppidin
    if len(sn) < 4:
        sn=self.subserialnumber
        if not sn:
            return 0
        table='sub'
    sql='''SELECT COUNT(*) 
    FROM tbl_workorders w, tbl_rmaproducts_generic rg
    WHERE (
        w.serialnumber = \'{sn}\'
        OR w.subserialnumber = \'{sn}\'
        OR w.ppidin = \'{sn}\'
    )
    AND w.id < {wo}
    AND rg.received_wo = w.id
    AND rg.swapgroup_id IN ({sw})
    '''
cursor = connection.cursor()
sw = rl.swapgroup_id
if rl.swapgroup_id == 25:
    sw = '18,25'
cursor.execute(sql.format(sn=sn, wo=self.id, sw=sw))
return cursor.fetchone()[0]

[ Voor 10% gewijzigd door Verwijderd op 13-07-2016 15:31 ]

Beste antwoord (via Verwijderd op 14-07-2016 16:32)


  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 19:53

Ventieldopje

I'm not your pal, mate!

Klinkt inderdaad alsof je voor je zelf een probleem maakt door alles via SSH te doen. Je kan de map mounten via NFS / SFTP / CIFS zoals windwarrior al aangaf of je zorgt dat je de code ook lokaal hebt. Zelf lijkt mij dat laatste een betere oplossing maar ik kan je situatie niet inschatten in wat mogelijk is.

Wellich is het ook verstandig een versiebeheer systeem als GIT te gebruiken? Je kan dan de de server waarop je werkt als een remote instellen en je commits naar pushen. Sterker nog, je kunt simpel met hooks er allerlei acties aan hangen zoals het automatisch uitchecken van een branch in een aparte map. Zo kun je met een druk op de knop je veranderingen pushen naar een test of productie omgeving.

offtopic:
In before shitstorm, voorzichtigheid is geboden uiteraard. Het is maar een simpel voorbeeld.

[ Voor 7% gewijzigd door Ventieldopje op 14-07-2016 00:57 ]

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8

Alle reacties


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 19:53

Ventieldopje

I'm not your pal, mate!

Nano is een prima editor maar was bij mijn weten nooit een uitblinker qua syntax highlighting. Zeker niet als je het vergelijkt met moderne IDE's als Atom en Sublime.

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ventieldopje schreef op woensdag 13 juli 2016 @ 16:22:
Nano is een prima editor maar was bij mijn weten nooit een uitblinker qua syntax highlighting. Zeker niet als je het vergelijkt met moderne IDE's als Atom en Sublime.
Zijn Sublime en Atom ook als text editor in de terminal te gebruiken? Ik doe eigenlijk niets lokaal op mijn OSX systeem maar alles via SSH op de test en webserver (draaien beide Ubuntu 16.04)
Notepad++ heb ik wel via WINE aan de gang gekregen voor editen via SFTP maar dat werkt met plugins niet heel erg ideaal (NP++ vereist een plug-in voordat je met SFTP aan de gang kunt)

Acties:
  • 0 Henk 'm!

  • windwarrior
  • Registratie: Januari 2009
  • Laatst online: 12-07-2024

windwarrior

ʍıupʍɐɹɹıoɹ

Als je een goede editor wil commandline moet ik je of Vimof Emacs aanraden. Kijk uit, beide hebben een grote leercurve en werken compleet anders. Kies zelf welke jij het fijnst lijkt... emacs en vim gebruikers kunnen erg fanatiek zijn over hun editor... :p

Wat je ook kan doen is je remote filesystem mounten via SFTP, en dan gewoon sublime/atom/vs code gebruiken.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 19:53

Ventieldopje

I'm not your pal, mate!

Klinkt inderdaad alsof je voor je zelf een probleem maakt door alles via SSH te doen. Je kan de map mounten via NFS / SFTP / CIFS zoals windwarrior al aangaf of je zorgt dat je de code ook lokaal hebt. Zelf lijkt mij dat laatste een betere oplossing maar ik kan je situatie niet inschatten in wat mogelijk is.

Wellich is het ook verstandig een versiebeheer systeem als GIT te gebruiken? Je kan dan de de server waarop je werkt als een remote instellen en je commits naar pushen. Sterker nog, je kunt simpel met hooks er allerlei acties aan hangen zoals het automatisch uitchecken van een branch in een aparte map. Zo kun je met een druk op de knop je veranderingen pushen naar een test of productie omgeving.

offtopic:
In before shitstorm, voorzichtigheid is geboden uiteraard. Het is maar een simpel voorbeeld.

[ Voor 7% gewijzigd door Ventieldopje op 14-07-2016 00:57 ]

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 00:11
Volgens mij heb ik dit ook wel eens gehad met nano: lijkt vooral moeite te hebben met de escapes \'. Je zou hier nog de escapes kunnen vermijden met dubbele quotes """ ... """ om de query.

Even terzijde: denk erom dat die string format je geen bescherming biedt tegen SQL injection ;) Ik weet niet welke package je gebruikt, maar pyodbc bijvoorbeeld biedt ook geparameteriseerde queries.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
windwarrior schreef op woensdag 13 juli 2016 @ 23:45:
Als je een goede editor wil commandline moet ik je of Vimof Emacs aanraden. Kijk uit, beide hebben een grote leercurve en werken compleet anders. Kies zelf welke jij het fijnst lijkt... emacs en vim gebruikers kunnen erg fanatiek zijn over hun editor... :p

Wat je ook kan doen is je remote filesystem mounten via SFTP, en dan gewoon sublime/atom/vs code gebruiken.
VIM en emacs zijn voor mij nog een beetje 'te hoog gegrepen', begin pas net een beetje te werken met terminals/ssh
Ventieldopje schreef op donderdag 14 juli 2016 @ 00:56:
Klinkt inderdaad alsof je voor je zelf een probleem maakt door alles via SSH te doen. Je kan de map mounten via NFS / SFTP / CIFS zoals windwarrior al aangaf of je zorgt dat je de code ook lokaal hebt. Zelf lijkt mij dat laatste een betere oplossing maar ik kan je situatie niet inschatten in wat mogelijk is.

Wellich is het ook verstandig een versiebeheer systeem als GIT te gebruiken? Je kan dan de de server waarop je werkt als een remote instellen en je commits naar pushen. Sterker nog, je kunt simpel met hooks er allerlei acties aan hangen zoals het automatisch uitchecken van een branch in een aparte map. Zo kun je met een druk op de knop je veranderingen pushen naar een test of productie omgeving.

offtopic:
In before shitstorm, voorzichtigheid is geboden uiteraard. Het is maar een simpel voorbeeld.
Ik zal inderdaad nog eens naar SFTP kijken, goed idee.
Voor het revisiebeheer tussen test- en live server gebruik ik SVN.
Morrar schreef op donderdag 14 juli 2016 @ 08:04:
Volgens mij heb ik dit ook wel eens gehad met nano: lijkt vooral moeite te hebben met de escapes \'. Je zou hier nog de escapes kunnen vermijden met dubbele quotes """ ... """ om de query.

Even terzijde: denk erom dat die string format je geen bescherming biedt tegen SQL injection ;) Ik weet niet welke package je gebruikt, maar pyodbc bijvoorbeeld biedt ook geparameteriseerde queries.
Deze wijze van SQL aanroepen zit op behoorlijk veel plaatsen verwerkt in de code. Het meeste is legacy code vanaf 2006 en ik hanteer dan bij voorkeur de stijl die mijn voorganger heeft gebruikt. Alles een keer ombouwen behoort wel tot de mogelijkheden maar op dit moment geen absolute noodzaak aangezien het een relatief klein/eenvoudig intern systeem betreft. (laatst wel overgegaan naar pyobdc toen ik de webserver om heb gehangen van windows naar ubuntu, apache op ubuntu werkt toch een stuk fijner)

Bedankt in ieder geval voor jullie input, ik ga er mee aan de gang en laat het hier nog wel even weten over een tijdje wat er uit is gekomen d:)b

[ Voor 12% gewijzigd door Verwijderd op 14-07-2016 16:34 ]

Pagina: 1