iris-python-faker

Downloads28
Subscribe
0
Bookmark
0
Details
Releases
Reviews
Awards
Issues
Provider

What's new in this version

Updated readme, fixed some issues

iris-python-faker

Python Faker library through Embedded Python support in InterSystems IRIS with UI

Online Demo

What is Faker

Faker helps to generate some fake data, but similar to real data. While InterSystems's Populate can only generate only very random text just from letters or numbers. Faker has many realizations for some other languages, such as NodeJS, PHP, Perl, Ruby. And this project uses Python's realization with embedded Python feature in IRIS.

Python Faker has

  • 80+ locales, so, generated data, can be almost any language English, Russian, Chineese. Person names, Addresses and many other values can be localized
  • 20+ providers for many different types of data. Not everything is implemented in this project, yet, just some basic ones.
  • community providers can be added later as well

screenshot

Prerequisites

Installation

Clone/git pull the repo into any local directory

git clone https://github.com/caretdev/iris-python-faker.git

Open the terminal in this directory and run the command to build and run IRIS container:

DOCKER_BUILDKIT=1 docker-compose up --build -d

Check the port selected for web by Docker with command

docker-compose ps

And open in the browser http://localhost:52773/faker/index.html (Replace 52773 port with port from ps's output). Or from menu in VSCode.

menu

Install with ZPM

The package is available to be installed with zpm.

zpm "install python-faker"

It requires IRIS version with Python Embedded feature (2021.2+) and package faker installed with python-pip.

Usage UI

Add rows to table, as many as many columns you need in generating table. Select datatypes from the list of available types, and enter name for colummn.

select-datatype

On the bottom toolbar, you can select Locale, and change the amount of preview rows to be generated on each change.

select-locales

Generate button, will open a dialog, where you will be able to enter how many rows to generate and desired class name. If you wish to add data to an existing class uncheck Create class. In case of any errors happend on the server side during generation, it will show the error message.

generate-failed

generate-success

Usage programmatical

It is also possible to generate new data programmatically

  Set params = {
    "rows": 3,                // How many rows generate
    "className": (className), // Where to store generated data
    "locale": "en",           // Select Locale for generated data
    "columns": [{
      "type": "person_name",
      "name": "name"
    }, {
      "type": "date_of_birth",
      "name": "dob"
    }, {
      "type": "boolean",
      "name": "flag"
    }]
  }
  Set faker = ##class("caretdev.Faker.Main").%New()
  Do faker.%JSONImport(params)
  Quit:'$$$AssertStatusOK(faker.GenerateClass())
  Do $ClassMethod(className, "%KillExtent")

Set result = faker.Generate()
If $Extract(result)=0 Do $system.OBJ.DisplayError(result)
Write !,"Rows created",result.created

Or just generate without saving to class

  Set params = {
    "previewRows": 3,         // How many items generate
    "locale": "en",           // Select Locale for generated data
    "columns": [{
      "type": "person_name",
      "name": "name"
    }, {
      "type": "date_of_birth",
      "name": "dob"
    }, {
      "type": "boolean",
      "name": "flag"
    }]
  }
  Set faker = ##class("caretdev.Faker.Main").%New()
  Do faker.%JSONImport(params)

Set result = faker.Generate()
If $Extract(result)=0 Do $system.OBJ.DisplayError(result)
Set items = result."getitem"("items")
Set count = items."len"()
For i=0:1:count-1 {
Set item = items."getitem"(i)
Set name = item."getitem"("name")
Set dob = item."getitem"("dob")
Set flag = item."getitem"("flag")
}

ZPM installation
zpm "install python-faker"
Rating
5 (1)
ObjectScript quality test
Passed
Updated on 28 November 2022
ObjectScript quality report
Category
Technology Example
Works with
InterSystems IRIS
Tags
Info
Publisher
CaretDev
Version
0.0.2
Last updated
2022-03-31
Repository
Open
Documentation
Open
License
Link