Exemplo n.º 1
0
def encode_play():

    # None of this works because all encode uses await, and you cannot call
    # any await method unless every def is async def
    # So we do have to split our database query build + ORM into both sync
    # and async

    from uvicore import db
    import sqlalchemy as sa
    from databases import Database

    connection = 'wiki'

    database = Database('mysql://*****:*****@127.0.0.1:3306/uvicore_wiki')
    database.connect()

    table = sa.Table("users", db.metadata.get(connection),
                     sa.Column("id", sa.Integer, primary_key=True),
                     sa.Column("name", sa.String(length=50)))

    #engine = db.engine('wiki')
    #con = db.connect()
    query = table.select()
    users = database.fetch_all(query)
    # for user in users:

    # table = User.Db.table
    # query = table.select()
    # users = con.execute(query)

    dd('DONE encode_play()')
Exemplo n.º 2
0
class ShowsDB(object):
    def __init__(self):
        self.database = Database(url=DATABASE_URL,
                                 ssl='require',
                                 min_size=1,
                                 max_size=2)
        self.metadata = MetaData()
        self.shows = Table('shows', self.metadata,
                           Column('show_id', Integer, primary_key=True),
                           Column('type', String, nullable=True),
                           Column('title', String, nullable=True),
                           Column('director', String, nullable=True),
                           Column('cast', String, nullable=True),
                           Column('country', String, nullable=True),
                           Column('date_added', Date, nullable=True),
                           Column('release_year', Integer, nullable=True),
                           Column('rating', String, nullable=True),
                           Column('duration', String, nullable=True),
                           Column('listed_in', String, nullable=True),
                           Column('description', String, nullable=True))

    def initialize(self):
        engine = create_engine(DATABASE_URL)
        self.metadata.create_all(engine)
        return self

    def connect(self):
        return self.database.connect()

    def disconnect(self):
        return self.database.disconnect()

    def execute(self, query, get='all'):
        if get != 'all':
            return self.database.fetch_one(query)
        return self.database.fetch_all(query)

    def fetch_all(self, query):
        return self.database.fetch_all(query)
Exemplo n.º 3
0
class Database:
    def __init__(self, url: str):
        #self.url = DatabaseURL(url)
        self.url = url
        if app.is_async:
            from databases import Database as EncodeDatabase
            # NO +pymysql
            self.encodedb = EncodeDatabase(
                "mysql://*****:*****@127.0.0.1/uvicore_wiki")

            @app.http.on_event("startup")
            async def startup():
                await self.encodedb.connect()

            @app.http.on_event("shutdown")
            async def shutdown():
                await self.encodedb.disconnect()
        else:

            self.engine = create_engine(self.url, echo=True)

        from sqlalchemy import MetaData
        self.metadata = MetaData()

    def connect(self):
        return self.engine.connect()

    def fetchone(self, entity: E, query) -> E:
        if app.is_async:
            return self.encodedb.fetch_one(query=query)
        else:
            with self.connect() as con:
                results = con.execute(query)
                return entity(**results.fetchone())

    def fetchall(self, entity, query) -> List[E]:
        if app.is_async:
            return self.encodedb.fetch_all(query=query)
        else:
            with self.connect() as con:
                results = con.execute(query)
                rows = []
                for row in results:
                    #rows.append(entity.User(**row))
                    rows.append(entity(**row))
                return rows
Exemplo n.º 4
0
import asyncio

from databases import Database

database = Database('sqlite:///example.db')

results = asyncio.run(database.fetch_all(query='SELECT * FROM user'))
print(results)