コード例 #1
0
 def connect_database(self):
     meta = MetaData()
     if self.schema:
         meta.schema = self.schema
     self.Base = declarative_base(metadata=meta)
     if '://' not in self.url and self.url.lower().endswith('.csv'):
         # special case for csv file - just load into memory
         self.engine = self.wrap_csv(self.url)
     else:
         try:
             self.engine = create_engine(self.url, echo=self.verbose)
         except ImportError as e:
             print("Support library for this database not installed - {}".
                   format(e))
             exit(1)
         except ArgumentError:
             if os.path.exists(self.url) or self.can_create:
                 try:
                     # maybe this is a local sqlite database?
                     sqlite_url = 'sqlite:///{}'.format(self.url)
                     self.engine = create_engine(sqlite_url,
                                                 echo=self.verbose)
                     self._full_url = sqlite_url
                 except ArgumentError:
                     # no joy, recreate the original problem and die.
                     self.engine = create_engine(self.url,
                                                 echo=self.verbose)
             else:
                 raise
     only = None
     if self.tables:
         only = list(self.tables)
     self.Base.metadata.reflect(self.engine, only=only)
     self._session = create_session(bind=self.engine)
コード例 #2
0
ファイル: database.py プロジェクト: FrozRt/marmon_back
class DatabaseNorm(Database):
    @classmethod
    def log_query(cls, message):
        print(message)

    async def execute(self,
                      query: typing.Union[ClauseElement, str],
                      values: dict = None) -> typing.Any:
        self.log_query(query)
        async with self.connection() as connection:
            return await connection.execute(query, values)

    async def fetch_all(self, query: typing.Union[ClauseElement, str], values: dict = None) -> \
            typing.List[typing.Mapping]:
        self.log_query(query)
        return await super(DatabaseNorm, self).fetch_all(query=query,
                                                         values=values)

    async def fetch_one(self, query: typing.Union[ClauseElement, str], values: dict = None) -> \
            typing.Optional[typing.Mapping]:
        self.log_query(query)
        return await super(DatabaseNorm, self).fetch_one(query=query,
                                                         values=values)


database = DatabaseNorm(DATABASE_URL)
engine = create_engine(DATABASE_URL)
metadata = MetaData()
metadata.schema = DEFAULT_SCHEMA
metadata.create_all(engine)
コード例 #3
0
import os

from sqlalchemy import create_engine, MetaData
from sqlalchemy import Table, Column
from sqlalchemy import Integer, String, DateTime, Float
from sqlalchemy.sql import and_, or_, not_
from sqlalchemy import func
from sqlalchemy.orm import sessionmaker

from contextlib import contextmanager

import config

engine = config.bbraun_bi_engine
metadata = MetaData(engine)
metadata.schema = config.META_SCHEMA
Session = sessionmaker(bind=engine)

# status_history_table = Table('status_history_table', metadata, autoload=True)

status_history_table_name = 'process_history'

status_history_table = Table(
    status_history_table_name,
    metadata,
    Column('run_id', Integer),
    Column('script_name', String(50)),
    Column('load_name', String(50)),
    Column('status', String(50)),
    Column('description', String(50)),
    Column('start_date', DateTime),
コード例 #4
0
from sqlalchemy import MetaData, Table, create_engine, select

from utils import config

metadata = MetaData()
metadata.schema = config['db']['schema']
engine = create_engine(
    "mssql+pymssql://%s:%s@%s:%s/%s" %
    (config['db']['user'], config['db']['password'], config['db']['hostname'],
     config['db']['port'], config['db']['database']))

# artist = Table('artist', metadata, autoload=True, autoload_with=engine)
# album = Table('album', metadata, autoload=True, autoload_with=engine)

# s = select([artist]).limit(10)
# print(engine.execute(s).fetchall())
#
# s = select([album]).limit(10)
# print(engine.execute(s).fetchall())

# print(metadata.tables)
# print(album.foreign_keys)
# print(str(artist.join(album)))

# ------------------------------------------------------------------------------

metadata.reflect(bind=engine)
# print(metadata.tables.keys())

artist = metadata.tables['practice.artist']
album = metadata.tables['practice.album']