sql >> Database >  >> RDS >> Database

Python-database programmeren met SQL Express voor beginners

Python is de afgelopen 5 jaar explosief gegroeid in populariteit. Veel nieuwe programmeurs worden erdoor aangetrokken vanwege de zachte leercurve ten opzichte van andere programmeertalen. Ervaren programmeurs worden erdoor aangetrokken vanwege de uitbreidbaarheid en kracht. Een van de belangrijkste drijfveren van deze massale acceptatie is echter het gemak waarmee Python met databases kan werken. In deze programmeerhandleiding voor Python wordt onderzocht hoe u aan de slag kunt gaan met het gebruik van Python om te communiceren met SQL Express met behulp van Python 3.

Python- en databaseprogrammering

Een Python-beginner die databasefunctionaliteit wil integreren in elke softwareproject geschreven in elke taal moet een basiskennis hebben van ten minste twee talen. De eerste is natuurlijk Python en de tweede is de specifieke gestructureerde querytaal (SQL) die door de database wordt gebruikt. Hoewel SQL gestandaardiseerd is, is het in de praktijk geen universele taal, maar de implementaties tussen verschillende databases zijn zo dichtbij dat het verplaatsen van de ene database naar de andere niet zo'n grote uitdaging is als men eenmaal een comfortabel niveau van ervaring heeft met het ontwikkelen van databasetoepassingen.

Een andere belangrijke overweging voor databases is dat ze allemaal beheersoftware nodig hebben. Deze beheertools kunnen helpen bij het instellen van toegang tot en beveiligingsrechten binnen een database. Ze kunnen ook worden gebruikt om databasetoepassingen te debuggen, omdat ze een ontwikkelaar in staat kunnen stellen om dingen te doen als:

  • Creëren en beheren van de inhoud van tabellen, views en andere database-objecten. Dit omvat de relaties tussen tabellen, evenals het configureren van integriteitsregels.
  • Interactie met de database rechtstreeks via invoer van SQL-code.
  • Foutopsporing in SQL-syntaxis.
  • Ongedaan maken (tot op zekere hoogte) van schade veroorzaakt door onjuist gecodeerde SQL-instructies in de toepassing.

Zelfs als een ontwikkelaar ervoor kiest om een ​​op noSQL gebaseerde database zoals MongoDB te gebruiken, zullen er nog steeds uitdagingen zijn bij het leren van de databasespecifieke coderingssyntaxis die nodig is om een ​​dergelijke oplossing te laten werken. Dit zijn natuurlijk geen afschrikmiddelen, het zijn slechts technische factoren waarmee rekening moet worden gehouden bij elk softwareontwikkelingsproject.

Python- en databasestuurprogramma's

Python kan, net als elke andere programmeertaal, niet native communiceren met een bepaalde database. Er moeten extra modules worden toegevoegd voor een specifieke databaseserver. Vanuit het oogpunt van best practice is het het beste om een ​​databasestuurprogrammamodule te gebruiken die specifiek is voor de databaseserver die voor het softwareproject is gekozen. Dit zorgt ervoor dat Python toegang heeft tot alle functies van de databaseserver, zelfs als dit gepaard gaat met de extra kosten van het gebruik van een specifieke programmeersyntaxis voor de module. Hoewel er enkele pogingen zijn gedaan om "universele" databasestuurprogrammamodules te maken die verbinding kunnen maken met meerdere databaseservers, gaan deze vaak ten koste van het verlies van toegang tot bepaalde functies van een bepaalde databaseserver.

Wat is SQL Express?

SQL Server is al decennia lang dé databaseserveroplossing voor Windows. Hoewel het ongeveer zo ver is van een gratis databaseserveroplossing als je kunt krijgen, biedt Microsoft wel een gratis, uitgeklede variant van SQL Server, SQL Express genaamd. SQL Express is een ideaal leermiddel voor beginners omdat het dezelfde SQL-syntaxis ondersteunt die SQL Server gebruikt. Zowel SQL Express als SQL Server gebruiken een aangepaste extensie van SQL genaamd "Transact-SQL", ook wel bekend als "T-SQL". Zowel SQL Express als SQL Server ondersteunen het gebruik van Windows-gebruikersaccounts en traditionele gebruikersnaam- en wachtwoordsystemen voor toegangsbeheer.

Python communiceert met SQL Express of SQL Server met een module met de naam PyODBC . Zowel SQL Server als SQL Express worden beheerd door een afzonderlijke, gratis Windows-toepassing genaamd "SQL Server Management System", in de volksmond bekend als "SSMS". Op het moment van schrijven zijn zowel SQL Express als SSMS afzonderlijke downloads van Microsoft:

  • SSMS-download
  • SQL Express-download

SQL Express configureren voor Python-ontwikkeling

SQL Express ondersteunt, net als SQL Server, twee soorten authenticatie. De eerste is authenticatie op basis van het Windows-gebruikersaccount van een gebruiker, ook wel een 'vertrouwde verbinding' genoemd. De tweede is dat traditionele op gebruikersnaam en wachtwoord gebaseerde authenticatie wordt geïmplementeerd in wat "Mixed Mode Authentication" wordt genoemd. Mixed Mode Authentication ondersteunt zowel op Windows-gebruikersaccount gebaseerde authenticatie als op gebruikersnaam en wachtwoord gebaseerde authenticatie. Er is geen manier om alleen op gebruikersnaam en wachtwoord gebaseerde authenticatie te ondersteunen in SQL Server of SQL Express.

Microsoft is afgestapt van Mixed Mode Authentication, aangezien een van de belangrijkste voordelen van het gebruik van Trusted Connections is dat databasereferenties niet in applicatiecode hoeven te worden opgeslagen. De demonstratie in dit artikel zal het ook niet gebruiken.

De verbindingsreeks na de installatie NIET kopiëren

Een twistpunt voor applicatieontwikkelaars op beginnersniveau is de aanvankelijke verwarring rond SQL Server-verbindingsreeksen. Als iemand SQL Express installeert, levert het installatieprogramma de verbindingsreeks voor de gemaakte SQL Express-instantie na de installatie. Helaas zal de meegeleverde Connection String waarschijnlijk niet werken met PyODBC . Hoewel het verleidelijk is om met deze "freebie" in een gevoel van veiligheid te worden "gesust", zal het meer problemen veroorzaken dan het waard is.

Afbeelding 1 – De verbindingsreeks ophalen uit het SQL Express-installatieprogramma

Merk op dat, op het moment van schrijven, het installatieprogramma voor SQL Express ook een link bevat om het SSMS-installatieprogramma te downloaden.

Een database maken in SQL Express

Zodra zowel SQL Express als SSMS zijn geïnstalleerd, is het tijd om een ​​basisdatabase te maken met geschikte toegangsbeperkingen. De eenvoudigste manier om SSMS te starten, is door op de knop Start . te klikken knop in Windows, typ "ssms" in de zoekbalk, wacht tot "Microsoft SQL Server Management Studio 18" in de rechterbovenhoek verschijnt en klik vervolgens op Open link aan de rechterkant van het startmenupaneel:

Figuur 2 – SSMS starten

Bij het starten van SSMS wordt men begroet door het volgende dialoogvenster:

Figuur 3 – SSMS openingsdialoogvenster

Met Windows-verificatie hoeft u geen inloggegevens in te voeren. Het Windows-gebruikersaccount waaronder SQL Express is geïnstalleerd, heeft beheerdersrechten voor de SQL Express-instantie. Klik gewoon op Verbinden om door te gaan.

Helemaal links in het SSMS-toepassingsvenster , zal er de Objectverkenner . zijn . Om een ​​nieuwe database aan te maken, klikt u met de rechtermuisknop op Databases en selecteer Database maken uit de Context menu:

Figuur 4 – Een nieuwe database maken – Deel 1 van 2

Klikken op Nieuwe database... opent een nieuw dialoogvenster waarin de gegevens van de nieuwe database kunnen worden ingevoerd. Voor deze demonstratie heet de database RazorDemo , als een terugblik op een vorig artikel over het ontwikkelen van op Razor gebaseerde applicaties in C#. Typ de naam van de database in het tekstvak naast Databasenaam en klik vervolgens op de OK knop onderaan het dialoogvenster. Merk op dat in de onderstaande afbeelding de kolommen voor de Logische naam van de bestanden werden iets verbreed zodat de volledige Logische namen van de databasebestanden die werden gemaakt, werden blootgesteld:

Figuur 5 – Een nieuwe database maken – Deel 2 van 2

De nieuwe database zal dan verschijnen in de Object Explorer onder de Databases map:

Figuur 6 – De nieuw aangemaakte “RazorDemo”-database

Tabellen maken in SQL Express

Een relationele database is niet echt handig zonder tabellen om de gegevens op te slaan, en de meest eenvoudige manier om die tabellen te maken is door SQL-code te gebruiken. Let op, hoewel men de Wizard voor het maken van tabellen . zou kunnen gebruiken om een ​​tabel te maken, is het gebruik van SQL-code sneller, gemakkelijker en veel eenvoudiger. Begin door met de rechtermuisknop op de RazorDemo . te klikken database-invoer en klik vervolgens met de linkermuisknop op de Nieuwe zoekopdracht optie in het contextvenster:

Figuur 7 – Een nieuw queryvenster openen

Rechts van de Objectverkenner . verschijnt een query-editorvenster dat lijkt op het onderstaande :

Afbeelding 8 – Het venster Query-editor

De code voor het maken van de tabel wordt weergegeven in de onderstaande lijst:

use RazorDemo;  # See the Important Note below

create table artists
(rcdid int not null identity primary key,
artist_name varchar(max));

create table albums
(rcdid int not null identity primary key,
artist_id int not null references artists(rcdid) on delete cascade,
album_name varchar(max));
         

Listing 1 - Table Creation SQL Code

Let op, tijdens het maken van een Query Editor-venster van de database garandeert meestal dat de geselecteerde database degene is waartegen de code wordt uitgevoerd, is het een goed idee om altijd expliciet gebruiken de beoogde database aan het begin van de code. Het gebruik commando selecteert expliciet de naam van de database die erop volgt.

Op F5 . drukken of klik op Uitvoeren knop voert de instructies uit tegen de RazorDemo databank. Als de uitvoering slaagt, verschijnt er een bericht dat dit aangeeft in de "Berichten vak hieronder:

Figuur 9 – Succesvolle tabelcreatie

De nieuw gemaakte tabellen en hun kolommen zijn te zien in Object Explorer ook. Merk op dat soms de Ververs optie uit het contextmenu dat verschijnt wanneer u met de rechtermuisknop op de database klikt, moet mogelijk worden geselecteerd om nieuwe objecten in een database weer te geven:

Afbeelding 10 – De Objectverkenner vernieuwen


Figuur 11 – De nieuwe tabellen en hun kolommen

Op dit punt kan SSMS veilig worden gesloten.

Merk op dat SSMS ook op dezelfde manier werkt met elke SQL Server-database. Het is altijd een best practice om alle code voor het maken van tabellen op te slaan, ongeacht de databaseserver die wordt gebruikt. Hoewel SQL Server en SQL het herstel van dergelijke scripts toestaan, maken ze beide het gebruik van codering op dergelijke instructies ook mogelijk, en in die gevallen kan de code niet worden hersteld.

Python en SQL Express

Normaal gesproken zou hier een discussie over SQL Server-beveiliging nodig zijn, maar aangezien Trusted Connections zal worden gebruikt, zolang het lopende proces dat de Python-code uitvoert eigendom is van een Windows-gebruiker die al toegang heeft tot een database die wordt geopend, is die discussie niet nodig. Houd er rekening mee dat zowel SQL Server als SQL Express zeer robuuste beveiligingsgerelateerde aanpassingen bieden, maar deze vallen buiten het bestek van een artikel dat bedoeld is voor beginners.

Let op, verdoezel niet de juiste databasebeveiliging voor applicaties die in een productieomgeving draaien! Zorg ervoor dat alleen de minst mogelijke privileges worden gegeven aan het gebruikersaccount dat toegang zou krijgen tot een database in een projectieomgeving.

De versie van Python die voor deze codevoorbeelden wordt gebruikt, is 3.10 en is geïnstalleerd via de Microsoft Store in Windows. Als u Python met deze methode installeert, worden de uitvoerbare bestanden van Python en PIP3 aan het systeempad toegevoegd, zodat de volledige paden naar deze opdrachten niet hoeven te worden getypt in de Opdrachtprompt ramen. Voor code-invoer is Notepad++ een goede, gratis teksteditor.

Opdrachtpromptvenster openen

Het uitvoeren van Python-code kan het beste worden gedaan via de Opdrachtprompt . Toegang krijgen tot de Opdrachtprompt , klik op de Start knop in Windows en voer cmd . in in de zoekbalk. Wacht op Opdrachtprompt om te verschijnen en klik vervolgens op de knop Openen link aan de rechterkant van het Startmenu :

Afbeelding 12 – Een opdrachtprompt openen

Een typische opdrachtprompt venster ziet er als volgt uit:

Afbeelding 13 – Een typische opdrachtprompt

PyODBC installeren

PyODBC is de Python-module waarmee Python toegang heeft tot zowel SQL Server als SQL Express. Na installatie van Python via de Microsoft Store, PyODBC kan aan Python worden toegevoegd via het commando:

pip3 install pyodbc

Figuur 14 – Succesvolle installatie van PyODBC

Let op, als er meerdere versies van Python zijn geïnstalleerd, bijvoorbeeld zowel Python 2 als Python 3, dan kan het nodig zijn om de prefix pip3 te geven. commando met het volledige WIndows-pad naar het commando voor de juiste versie van Python.

Merk ook op dat als alleen Python 3 is geïnstalleerd, de pip3 commando moet nog steeds worden gebruikt over de meer algemene pip commando, aangezien dit de juiste conventie is.

Python-code schrijven

Nu de database is geconfigureerd en PyODBC zijn geïnstalleerd, kan de database worden gevuld. In het geval van een database waarin artiesten en albums worden gecatalogiseerd, zijn enkele willekeurig gegenereerde bandnamen en albums voldoende. De Python-code om verbinding te maken met de database is ook inbegrepen, maar de inserts zijn (nog) niet:

# bad-band-name-maker.py
import sys
import random
import pyodbc

part1 = ["The", "Uncooked", "Appealing", "Larger than Life", "Drooping", "Unwell", "Atrocious", "Glossy", "Barrage", "Unlawful"]
part2 = ["Defeated", "Hi-Fi", "Extraterrestrial", "Adumbration", "Limpid", "Looptid", "Cromulent", "Unsettled", "Soot", "Twinkle"]
part3 = ["Brain", "Segment", "Audio", "Legitimate Business", "Mentality", "Sound", "Canticle", "Monsoon", "Preserves", "Hangout"]

part4 = ["Cougar", "Lion", "Lynx", "Ocelot", "Puma", "Jaguar", "Panther"]
part5 = ["Fodder", "Ersatz Goods", "Leftovers", "Infant Formula", "Mush", "Smoothie", "Milkshakes"]


def main(argv):
  # Connect to the RazorDemo database.
  conn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server};Server=localhost\SQLEXPRESS;Database=RazorDemo;Trusted_Connection=yes;")

  # Generate 15 bad band names:
  for x in range(1, 16):
    rand1 = random.randrange(0, 9)
    rand2 = random.randrange(0, 9)
    rand3 = random.randrange(0, 9)
    badName = part1[rand1] + ' ' + part2[rand2] + ' ' + part3[rand3]
    print ("Band name [" + str(x) + "] is [" + badName + "]")
  
    for y in range(1, 3):
      rand4 = random.randrange(0, len(part4))
      rand5 = random.randrange(0, len(part5))
      albumName = part4[rand4] + " " + part5[rand5]
      print ("\tAlbum [" + albumName + "]")
      
  # Close the Connection
  conn.close()
  return 0

if __name__ == "__main__":
	main(sys.argv[1:])



Listing 2 - Making up some data

Dit geeft de volgende output:

Figuur 15 – Willekeurig gegenereerde bandnamen

Let op het gebruik van de cd commando om naar de map te gaan waar de Python-code is opgeslagen. De PyODBC verbind() functie zal mislukken als het momenteel ingelogde Windows-gebruikersaccount wordt niet vermeld als toegang hebbend in SQL Express. Dit is alleen een probleem als de database is gemaakt met één Windows-gebruikersaccount maar de code wordt uitgevoerd onder een ander Windows-gebruikersaccount .

De minst slechtste manier om gegevens in SQL en PyODBC IN te voegen

Veel beginnende Python-ontwikkelaars komen in de verleiding om PyODBC . aan te roepen oproepen naar INSERT uitspraken in de volgende secties van de code, en in de context van wat hierna zal worden vermeld, is dit geen slecht idee:

Figuur 16 – De “bijna” verkeerde manier om met een database te werken

De reden waarom oproepen naar PyODBC om INSERT's uit te voeren , SELECTEER , en andere database-gerelateerde functies, zoals UPDATE of VERWIJDEREN , kan binnen lussen slecht zijn, omdat er overhead is die bij elk van deze oproepen komt. Binnen een lus die mogelijk honderden keren, duizenden keren of zelfs meer herhaald kan worden, kan dit resulteren in een aanzienlijke hoeveelheid tijd (minuten of meer) om een ​​script te doorlopen. Voor webapplicaties die een dergelijke benadering gebruiken, worden de prestatieproblemen nog groter, aangezien veel webservers harde limieten opleggen aan de hoeveelheid tijd die een script kan draaien. Geef in geen geval door de gebruiker gemaakte invoer rechtstreeks door aan een database. Controleer altijd de invoer om er zeker van te zijn dat deze de databasefunctionaliteit niet verbreekt of een beveiligingsprobleem veroorzaakt door middel van een SQL-injectieaanval.

Idealiter zou men de bovenstaande lussen willen gebruiken om een ​​SQL-batch (een lijst met instructies) te maken en vervolgens PyODBC te hebben draaien op die ene batch, maar dit zou een heel slecht idee zijn als de gegevens niet worden opgeschoond.

Waarom zouden de gegevens moeten worden opgeschoond? De reden komt neer op beveiliging, omdat gebruikersinvoer nooit kan worden vertrouwd. Het opschonen van de gegevens betekent dat ze worden weergegeven op een manier die voorkomt dat iets anders dan de SQL-instructie die door de ontwikkelaar van het programma is gemaakt, wordt uitgevoerd. Een gebruiker kan een kwaadwillig geconstrueerde string doorgeven die de uitvoering van willekeurig gemaakte SQL-code mogelijk zou maken. Dit staat bekend als een SQL-injectie-aanval. Hoewel gegevenswaarden die in een batch gaan, kunnen worden opgeschoond, valt het proces om dit te doen buiten het bestek van een inleidende zelfstudie.

PyODBC biedt een mechanisme voor het beschermen van de database tegen SQL-injectieaanvallen door gebruikersinvoer te zuiveren. Deze omvatten het gebruik van geparametriseerde uitspraken , ook wel voorbereide verklaringen genoemd . Beveiliging moet altijd een prioriteit zijn, zelfs als dit ten koste gaat van snelheid of andere prestatiestatistieken.

Het Windows-gebruikersaccount dat toegang heeft tot deze database heeft standaard sysadmin-rechten. Dit betekent dat als er een SQL-injectie-aanval plaatsvindt, een kwaadwillende gebruiker toegang kan krijgen tot alle gegevens in elke database op de server. In de praktijk zou geen enkel account met sysadmin-rechten toegang moeten hebben tot een database vanuit Python-code.

De onderstaande lijst is een aanvulling op het eerste Python-codevoorbeeld met behulp van PyODBC cursors om de gegevens in te voegen:

# bad-band-name-maker2.py
import sys
import random
import pyodbc

part1 = ["The", "Uncooked", "Appealing", "Larger than Life", "Drooping", "Unwell", "Atrocious", "Glossy", "Barrage", "Unlawful"]
part2 = ["Defeated", "Hi-Fi", "Extraterrestrial", "Adumbration", "Limpid", "Looptid", "Cromulent", "Unsettled", "Soot", "Twinkle"]
part3 = ["Brain", "Segment", "Audio", "Legitimate Business", "Mentality", "Sound", "Canticle", "Monsoon", "Preserves", "Hangout"]

part4 = ["Cougar", "Lion", "Lynx", "Ocelot", "Puma", "Jaguar", "Panther"]
part5 = ["Fodder", "Ersatz Goods", "Leftovers", "Infant Formula", "Mush", "Smoothie", "Milkshakes"]


def main(argv):
  # Connect to the RazorDemo database.
  conn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server};Server=localhost\SQLEXPRESS;Database=RazorDemo;Trusted_Connection=yes;")

  # Generate 15 bad band names, and try to keep them unique.
  previousNames = ""
  nameCount = 0
  while (nameCount < 16):
    rand1 = random.randrange(0, 9)
    rand2 = random.randrange(0, 9)
    rand3 = random.randrange(0, 9)
    badName = part1[rand1] + ' ' + part2[rand2] + ' ' + part3[rand3]
    # A crude but effective way of ensuring uniqueness, although there is no unique constraint on the artist name in the database.
    # This prepends and appends bars to both the list of previously used names and the current name. If the current name is
    # new, it will not be in that string.
    if ("|" + previousNames + "|").find("|" + badName + "|") == -1: 
      print ("Band name [" + str(nameCount) + "] is [" + badName + "]")
      sql1 = "insert into artists (artist_name) values (?)"
      values1 = [badName]
      rs1 = conn.cursor()
      rs1.execute(sql1, values1)
      rs1.commit()
      # If the cursor is not closed, then other cursors cannot be executed.
      rs1.close()
      for y in range(1, 3):
        rand4 = random.randrange(0, len(part4))
        rand5 = random.randrange(0, len(part5))
        albumName = part4[rand4] + " " + part5[rand5]
        print ("\tAlbum [" + albumName + "]")
        sql2 = "insert into albums (artist_id, album_name) values ((select top 1 rcdid from artists where artist_name=?), ?)"
        # Each array item here corresponds to the position of the ? in the SQL statement above.
        values2 = [badName, albumName]
        rs2 = conn.cursor ()
        rs2.execute(sql2, values2)
        rs2.commit()
        rs2.close()
      # Creates a bar-delimited list of previously used names.
      if previousNames == "":
        previousNames = badName
      else:
        previousNames = previousNames + "|" + badName
      nameCount = 1 + nameCount
    else:
      print ("Found a duplicate of [" + badName + "]")
  #print (previousNames)
  # Close the Connection
  conn.close()
  return 0

if __name__ == "__main__":
	main(sys.argv[1:])





Listing 3 - Inserting the data

De volgende query kan worden uitgevoerd in SSMS om de uitvoer van de code te verifiëren:

Figuur 17 – De succesvolle invoeging van de gegevens

Gegevens SELECTEREN in SQL Express en Python

Nu er gegevens in de database staan, zou het leuk zijn om deze op te vragen. Hieronder staat een eenvoudig script dat gebruikersgegevens van het toetsenbord accepteert en deze via een geparametriseerde query naar de database stuurt:

# bad-band-name-maker3.py
import sys

import pyodbc

def main(argv):
  searchValue = input("Enter something: ")
  # Cap the length at something reasonable. The first 20 characters.
  searchValue = searchValue[0:20]
  # Set the search value to lower case so we can perform case-insensitive matching:
  searchValue = searchValue.lower()
  
  # Connect to the RazorDemo database.
  conn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server};Server=localhost\SQLEXPRESS;Database=RazorDemo;Trusted_Connection=yes;")

  # You must use a parameterized query here in order to protect from SQL Injection Attacks!
  
  # For the like operator, the percent signs must be separated from the term or else the parameterization will fail.
  
  sql1 = ("select a.artist_name, b.album_name from artists a, albums b where b.artist_id = a.rcdid and " +
    "lower(album_name) like ('%' + ? + '%') order by a.artist_name, b.album_name")
  # Below is an array with one element:
  values1 = [searchValue]
  rs1 = conn.cursor()
  rs1.execute(sql1, values1)
  rows1 = rs1.fetchone()
  #print ("Type is [" + str(type(rows1)) + "]")
  if str(type(rows1)).find("NoneType") == -1:
    while rows1:
      # Columns are indexed by number only. 0 is the a.artist_name column and 1 is the b.album_name columns
      print(rows1[0] + " - " + rows1[1])
      rows1 = rs1.fetchone()
  else:
    print ("No album name matched [" + searchValue + "]")
  # Close the Connection
  conn.close()

  return 0

if __name__ == "__main__":
	main(sys.argv[1:])



Listing 4 - Querying the Data

Zelfde resultaten. Eén bevat zelfs een voorbeeld van een grove SQL-injectie-aanval:

Afbeelding 18 – Zoekresultaten. Noteer de laatste zoekwaarde.

Laatste gedachten over de ontwikkeling van Python-databases

Er is echt geen limiet aan wat SQL Server-gestuurde applicaties kunnen worden ontwikkeld met Python. Een ontwikkelaar wordt alleen beperkt door kennis van SQL, en hopelijk kunnen de fundamentele concepten die in dit artikel worden gepresenteerd een ontwikkelaar op beginnersniveau in de juiste richting wijzen in termen van het verbreden van iemands begrip van SQL en het bouwen van complexere applicaties.

Deze Python-handleiding voor het programmeren van databases, gepresenteerde manieren waarop SQL Express kan worden geïnstalleerd als een ontwikkelingsstand-in voor SQL Server, en liet zien hoe Python 3 kan worden uitgebreid om correct te communiceren met een SQL Express-database-instantie op die server. Dit artikel liet ook zien hoe SQL Server Management Studio moet worden gebruikt om SQL Express- of SQL Server-databases te beheren. Verdergaand, ging dit artikel ook in op elementaire veiligheidsmaatregelen en het gebruik van efficiënte codering om redelijke uitvoeringstijden te garanderen voor SQL Server-gestuurde toepassingen.


  1. Een blob invoegen in een database met behulp van sql server management studio

  2. Het samenvoegen van meerdere tabellen retourneert de NULL-waarde

  3. PDO-bindingswaarden voor MySQL IN-instructie

  4. Voeg dagen toe aan een datum in PostgreSQL