Skip to main content

RWTH Aachen Computer Science i5/dbis assets for Lecture Datenbanken und Informationssysteme

Project description

DBIS Schema Creator

pypi PyPI Status

Create a schema for SQLite databases and populate it using object-oriented programming. Also draw the corresponding er-diagram.

Installation

pip install dbis-schema-creator

Usage

from schema_creator import *

from erdiagram import ER

from faker import Faker
fake = Faker()


# Create a Table object (sqlalchemy style)
class Users(Table):
	# Create tables
	user_id = Column(Integer, primary_key=True)
	username = Column(String(50))

	# Optionally set the table name. Default is the lowercase class name
	__tablename__ = 'users'

	# Specify how to populate the table (e.g., using faker or random)
	def populate(session, seed=None):
		for _ in range(100):
			user = Users(username=fake.name())
			session.add(user)

	# Specify how to draw the er-diagram
	def to_er_diagram():
		g = ER()
		g.add_node("User")
		g.add_attribute("User", "user_id", isPK=True)
		g.add_attribute("User", "username")
		return g


class Posts(Table):
	post_id = Column(Integer, primary_key=True)
	user_id = Column(Integer, ForeignKey('users.user_id'))
	text = Column(String(1000))

	depedencies = {Users} # specify the tables that this table depends on. Default is none

	def populate(session, seed=None):
		# get already populated user table
		users = session.query(Users).all()
		for _ in range(1000):
			user = random.choice(users)
			post = Posts(user_id=user.user_id, text=fake.text())
			session.add(post)

	def to_er_diagram():
		g = ER()
		g.add_node("Post", isWeak=True)
		g.add_attribute("Post", "post_id", isPK=True, isWeak=True)
		g.add_attribute("Post", "user_id")
		g.add_attribute("Post", "text")
		g.add_relation("User", "posts", "Post", "1", "m", isWeak=True)
		return g


# Create the schema factory
tables = {Users, Posts}
factory = SchemaFactory(tables)

# populate the table
factory.populate()

# create the schema
schema = factory.to_sql()

# create the er-diagram
er_diagram = factory.to_er_diagram()

# draw the er diagram
digraph = er_diagram.draw()
digraph.render('er-diagram', format='png', view=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbis-schema-creator-0.1.0.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

dbis_schema_creator-0.1.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file dbis-schema-creator-0.1.0.tar.gz.

File metadata

  • Download URL: dbis-schema-creator-0.1.0.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for dbis-schema-creator-0.1.0.tar.gz
Algorithm Hash digest
SHA256 70ade58565ed8efb3e8f589c31f7cdd282c30b3008d61099d6ce62ba4443e597
MD5 b0b4de051a8481853849d9f101cd1595
BLAKE2b-256 bd48093927821074ded4b1a3d007d64113e82b065d25dccff99aeaf4047197a1

See more details on using hashes here.

File details

Details for the file dbis_schema_creator-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dbis_schema_creator-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de7a9740e2e39c96c31be0f2702d1603c0f66dad66597fdc1754f19677ab719b
MD5 149312b8a0720257d5c2c5bd060a3247
BLAKE2b-256 84f0795ecfb40d87a41805e22a8eb3f2c15b8ef941081a8a87695875dc340d4d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page