Database
 sql >> база данни >  >> RDS >> Database

Как да изпълните необработен SQL в SQLAlchemy

SQLAlchemy е SQL инструмент, създаден с Python, който предоставя на разработчиците изобилие от мощни функции за проектиране и управление на високопроизводителни бази данни.

Ще разгледаме накратко как да използваме SQLAlchemy и след това ще се потопим по-дълбоко в това как да изпълняваме необработени SQL изрази от комфорта на езика на домейна Python.

Използване на SQLAlchemy

Както при всички библиотеки на Python, започнете с инсталиране на SQLAlchemy. След като бъде инсталиран, можем да започнем да се забавляваме в Python.

След това импортирайте sqlalchemy себе си, след това импортирайте няколко модула, за да можем лесно да получим достъп до базата данни SQLAlchemy:

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy import inspect

В допълнение към create_engine , ние също така импортираме редица допълнителни модули, които ще са ни необходими за създаване на нова таблица. Преди да стигнем до това, уверете се, че SQLAlchemy е инсталиран, импортиран и работи, като извикате .__version__ така:

print sqlalchemy.__version__
Out[*]: 1.0.9

Създаване на таблица

Ще използваме основната функционалност на SQLAlchemy, която е SQL Expression Language, за да създадем някои metadata който ще съдържа редица свързани модули (или обекти), които дефинират нашата нова book таблица на базата данни:

metadata = MetaData()
books = Table('book', metadata,
  Column('id', Integer, primary_key=True),
  Column('title', String),
  Column('primary_author', String),
)

engine = create_engine('sqlite:///bookstore.db')
metadata.create_all(engine)

В горната част дефинираме metadata , след това го предаваме в Table() метод, където даваме на нашата таблица името book . В рамките на това ние дефинираме всяка колона, заедно с важни атрибути като тип данни и primary_key .

След като нашите таблици са дефинирани и свързани с нашите metadata обект, трябва да създадем машина за база данни, с която можем да се свържем. Това се постига с помощта на create_engine функция.

engine = create_engine('sqlite:///bookstore.db')

За нашия пример ще използваме прост SQLite база данни. Можете също да използвате низове за свързване за други машини като MySQL или PostgreSQL. Ето примерен синтаксис за създаване на машина за PostgreSQL:

engine = create_engine('postgresql://user:password@host/database')

Със създадения двигател, сега трябва да използваме .create_all() метод на нашите metadata обект и предайте engine връзка с него, което автоматично ще накара SQLAlchemy да генерира нашата таблица за нас, както се вижда по-горе.

След като приключим, можем да използваме таблицата, както сметнем за добре. В този прост пример просто ще използваме inspect модул, за да видите колоните и да проверите, че нашата таблица е създадена успешно:

inspector = inspect(engine)
inspector.get_columns('book')
Out[*]:
[{'autoincrement': True,
  'default': None,
  'name': u'id',
  'nullable': False,
  'primary_key': 1,
  'type': INTEGER()},
 {'autoincrement': True,
  'default': None,
  'name': u'title',
  'nullable': True,
  'primary_key': 0,
  'type': VARCHAR()},
 {'autoincrement': True,
  'default': None,
  'name': u'primary_author',
  'nullable': True,
  'primary_key': 0,
  'type': VARCHAR()}]

Разбира се, с помощта на .get_columns() метод за нашата book таблица, виждаме, че нашите три колони са генерирани.

Изпълнение на SQL изявления

С основите вече можем да опитаме да изпълним някакъв необработен SQL с помощта на SQLAlchemy.

Използване на текстовия модул

Един метод за изпълнение на необработен SQL е използването на text модул или Textual SQL . Най-четливият начин за използване на text е да импортирате модула, след това след свързване към engine , дефинирайте text Низ на SQL израз преди да използвате .execute за да го стартирате:

from sqlalchemy.sql import text
with engine.connect() as con:

    data = ( { "id": 1, "title": "The Hobbit", "primary_author": "Tolkien" },
             { "id": 2, "title": "The Silmarillion", "primary_author": "Tolkien" },
    )

    statement = text("""INSERT INTO book(id, title, primary_author) VALUES(:id, :title, :primary_author)""")

    for line in data:
        con.execute(statement, **line)

Тук вмъкваме два записа в нашата база данни с помощта на text() -дефиниран израз.

Използване на метода за изпълнение

Алтернативният метод е да пропуснете с помощта на text() и предайте необработен SQL низ към .execute() метод. Например, тук ще използваме .execute() за да видите новите записи, които вмъкнахме по-горе:

with engine.connect() as con:

    rs = con.execute('SELECT * FROM book')

    for row in rs:
        print row

Out[*]:
(4, u'The Hobbit', u'Tolkien')
(5, u'The Silmarillion', u'Tolkien')

Ето го! Прости и ефективни методи за изпълнение на необработени SQL изрази в SQLAlchemy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите минималната стойност на колона в SQL

  2. Премахване на следата по подразбиране – част 2

  3. IGNORE_DUP_KEY по-бавно при клъстерирани индекси

  4. Какво представлява технологията JPA на Java?

  5. SQL заявки