2
votes

Comment insérer dans la base de données Azure SQL à partir d'Azure Databricks en Python

Étant donné que pyodbc ne peut pas être installé sur Azure databricks, j'essaie d'utiliser jdbc pour insérer des données dans la base de données Azure SQL par Python, mais je peux trouver un exemple de code pour cela.

jdbcHostname = "xxxxxxx.database.windows.net"
jdbcDatabase = "yyyyyy"
jdbcPort = 1433
#jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};user={3};password={4}".format(jdbcHostname, jdbcPort, jdbcDatabase, username, password)

jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

pushdown_query = "(INSERT INTO test (a, b) VALUES ('val_a', 'val_b')) insert_test" 

Veuillez conseiller comment écrire du code d'insertion en Python. Merci.


0 commentaires

3 Réponses :


1
votes

Étant donné que pyodbc ne peut pas être installé sur Azure databricks

En fait, il semble que vous pourriez installer pyodbc dans databricks.

%sh    
apt-get -y install unixodbc-dev
/databricks/python/bin/pip install pyodbc

Pour plus de détails, vous pouvez vous référer à ceci réponse et cette blog .


1 commentaires

@jay wang, Merci, cela a fonctionné, et en plus j'avais besoin d'ajouter '% sh curl packages.microsoft .com / keys / microsoft.asc | apt-key add - curl packages.microsoft.com/config/ubuntu/16.04/ prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA = Y apt-get install msodbcsql17 apt-get -y install unixodbc-dev sudo apt-get install python3-pip -y pip3 install --upgrade pyodbc 'sur [lien] ( datathirst.net/blog/2018/10/12/... )



1
votes

Si je puis ajouter, vous devriez également pouvoir utiliser un cadre de données Spark à insérer dans Azure SQL. Utilisez simplement la chaîne de connexion fournie par Azure SQL.

connectionString = "<Azure SQL Connection string>"

data = spark.createDataFrame([(val_a, val_b)], ["a", "b"])

data.write.jdbc(connectionString, "<TableName>", mode="append")


0 commentaires

0
votes

Pigging backing on Jon ... C'est ce que j'ai utilisé pour écrire des données à partir d'un dataframe Azure Databricks vers une Azure SQL Database:

    Hostname = "YOUR_SERVER.database.windows.net"
    Database = "YOUR_DB"
    port = 1433
    UN = 'YOUR_USERNAME'
    PW = 'YOUR_PASSWORD'
    Url = "jdbc:sqlserver://{0}:{1};database={2};user={3};password= {4}".format(Hostname, Port, Database, UN, PW)

   df.write.jdbc(Url, "schema.table", mode="append")


0 commentaires