Giter Club home page Giter Club logo

magical-sqlserver's Introduction

Magical SQL Server

A tool that integrates Microsoft SQL Server into applications like magic.

What is this?

Do you have an application that needs to consume data stored on SQL Server Database, or needs to post data into this database? Magical SQL Server will handle that for you easily.

Requirements

To use this module, you have to install python3 and pymssql:

pip3 install pymssql

Bulk insert method uses BCP to copy multiple rows efficiently. See Microsoft Documentation to install it on your machine.

Usage

Let's say that you have a table called my_database.dbo.users:

id name team
1 example example
2 new_user users

To retrieve all the data from the table:

from magical_sqlserver import SQLServer
sql = SQLServer (
    user,
    password,
    host,
    my_database,
    port=1433,
)

data = sql.select("users")

This will return:

[
  {
    "id": 1,
    "name": "example",
    "team": "example"
  },
  {
    "id": 2,
    "name": "new_user",
    "team": "users"
  }
]

You can filter columns and get specific columns:

data = sql.select("users", condition={"id":1}, columns=["name"])

With result {"name":"example"}.

With Context

You may use with statement then Magical SQL Server will open and close a connection for you as your statement ends:

with SQLServer(user, host, password, my_database) as sql:
    sql.select("users")

You can close your connection manually with sql.close() method too.

As a decorator

You may want to decorate your funciton with this module. To to that, simply use the provide_session module. It will try replace sql argument if it exists in your funcion, or add a kwarg argument called sql. This decorator opens an close an SQL Server connection for you. Example:

from magical_sqlserver import provide_session

@provide_session(user, host, password, my_database)
def awesome_function(sql=None):
  sql.select("users")

Or with kwargs:

@provide_session(user, host, password, my_database)
def awesome_function(**kwargs):
  sql = kwargs["sql"]
  sql.select("users")

Writing data

Single records

To create new record:

data = {"id":3, "name":"bar"}

sql.insert("users", data)

To update existing records:

sql.update("users", data={"name":"new_name"}, contition={"id":1})

You can delete records too:

sql.delete("users", {"id":2, "name":"new_user"})

It's important to say that all conditions are additive. For example, if your update has condition {"id": 1, "name": "new_user"}, this module will build an sql query that has id = 1 and name = 'new_user' and will try this against the database. In the table above, no data will be updated.

Bulk Insert

Simply pass a list of dicts to bulk_insert method. It will transform it to csv temporary files and copy it to table with BCP method. See requirements for more details.

data = [{"id":4, "name":"me"},{"id":5, "name":"you"}]

sql.bulk_insert("users", data)

Other Stuff

You can run generic queries with the method query:

data = sql.query("select top(10) * from my_table join users on my_table.id = users.id")

And retrieve all tables from Sql Server Schema:

tables_list = sql.tables()

magical-sqlserver's People

Stargazers

 avatar Jorge Guevara Bohórquez avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.