mirror of https://github.com/balkian/bitter.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.2 KiB
Python
106 lines
3.2 KiB
Python
import time
|
|
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy.types import BigInteger, Integer, Text, Boolean
|
|
from sqlalchemy import Column, Index
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
class User(Base):
|
|
__tablename__ = 'users'
|
|
|
|
id = Column(BigInteger, primary_key=True, index=True, unique=True)
|
|
contributors_enabled = Column(Boolean)
|
|
created_at_stamp = Column(Text)
|
|
default_profile = Column(Boolean)
|
|
default_profile_image = Column(Boolean)
|
|
description = Column(Text)
|
|
entities = Column(Text)
|
|
favourites_count = Column(Integer)
|
|
followers_count = Column(Integer)
|
|
following = Column(Boolean)
|
|
friends_count = Column(Integer)
|
|
geo_enabled = Column(Boolean)
|
|
has_extended_profile = Column(Boolean)
|
|
id_str = Column(Text)
|
|
is_translation_enabled = Column(Boolean)
|
|
is_translator = Column(Boolean)
|
|
lang = Column(Text)
|
|
listed_count = Column(Integer)
|
|
location = Column(Text)
|
|
name = Column(Text)
|
|
notifications = Column(Boolean)
|
|
profile_background_color = Column(Text)
|
|
profile_background_image_url = Column(Text)
|
|
profile_background_image_url_https = Column(Text)
|
|
profile_background_tile = Column(Boolean)
|
|
profile_banner_url = Column(Text)
|
|
profile_image_url = Column(Text)
|
|
profile_image_url_https = Column(Text)
|
|
profile_link_color = Column(Text)
|
|
profile_sidebar_border_color = Column(Text)
|
|
profile_sidebar_fill_color = Column(Text)
|
|
profile_text_color = Column(Text)
|
|
profile_use_background_image = Column(Boolean)
|
|
protected = Column(Boolean)
|
|
screen_name = Column(Text)
|
|
statuses_count = Column(Integer)
|
|
time_zone = Column(Text)
|
|
url = Column(Text)
|
|
utc_offset = Column(Integer)
|
|
verified = Column(Boolean)
|
|
|
|
|
|
class Following(Base):
|
|
__tablename__ = 'followers'
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
isfollowed = Column(Integer)
|
|
follower = Column(Integer)
|
|
created_at_stamp = Column(Text)
|
|
|
|
follower_index = Index('isfollowed', 'follower')
|
|
|
|
class ExtractorEntry(Base):
|
|
__tablename__ = 'extractor-cursor'
|
|
|
|
id = Column(Integer, primary_key=True, default=lambda x: int(time.time()*1000))
|
|
user = Column(BigInteger, index=True)
|
|
cursor = Column(BigInteger, default=-1)
|
|
pending = Column(Boolean, default=False)
|
|
|
|
def make_session(url):
|
|
engine = create_engine(url)#, echo=True)
|
|
Base.metadata.create_all(engine)
|
|
Session = sessionmaker(bind=engine)
|
|
session = Session()
|
|
return session
|
|
|
|
|
|
|
|
def test(db='sqlite:///users.db'):
|
|
|
|
from sqlalchemy import exists
|
|
session = make_session(db)
|
|
|
|
our_user = session.query(User).first()
|
|
|
|
print(our_user.name)
|
|
print(session.query(User).count())
|
|
fake_user = User(name="Fake user")
|
|
session.add(fake_user)
|
|
session.commit()
|
|
print(session.query(User).count())
|
|
print(session.query(exists().where(User.name == "Fake user")).scalar())
|
|
fake_committed = session.query(User).filter_by(name="Fake user").first()
|
|
print(fake_committed.id)
|
|
print(fake_committed.name)
|
|
session.delete(fake_committed)
|
|
session.commit()
|
|
print(session.query(User).count())
|
|
print(list(session.execute('SELECT 1 from users where id=\'%s\'' % 1548)))
|