Dup Ver Goto 📝

Joins 01

PT2/db/postgres python db postgres mysql does not exist
To
78 lines, 224 words, 2233 chars Page 'Joins_01' does not exist.

Inner Join Example

    cur.execute("select * from mp4_raw_json inner join mp4_info on mp4_info.path = mp4_raw_json.path")

Worked Example

Copying data from a postgresql database to a local mysql database.

import sys
import mysql.connector
from mysql.connector.errors import DatabaseError
import json
from jda_psql import Psql1

try:
  mydb = mysql.connector.connect(host="localhost",user="me",password="turnip",database="mydb")
except DatabaseError as e:
  print(f"DatabaseError(connect): {e}",file=sys.stderr)
  exit(1)

class Get(Psql1):
  def go(self):
    cur = self.cur
    cur.execute("select * from mp4_raw_json inner join mp4_info on mp4_info.path = mp4_raw_json.path")
    headings = [desc[0] for desc in cur.description]
    data = []
    print("fetching psql")
    for row in cur.fetchall():
      d = {}
      for k,v in zip(headings,row):
        if k == "id":
          continue
        d[k] = v
      data.append(d)
    for item in data:
      path = item["path"]
      cat = path.split("/")[0]
      item["cat"] = cat
    cur = mydb.cursor()
    print("inserting mysql")
    for item in data:
      cur.execute("""INSERT INTO mp4_info ( 
        path, cat, filename, fps, duration, duration_hms, 
        width, height, size_bytes, data ) VALUES ( 
          %s, %s, %s, %s, %s, %s,
          %s, %s, %s, %s )""",(
            item["path"], item["cat"], item["filename"], item["fps"], item["duration"], item["duration_hms"],
            item["width"], item["height"], item["size_bytes"], json.dumps(item["data"])
                    )
                  )
      print("Added",item["path"])
  def ensure_table(self):
    cur = mydb.cursor()
    cur.execute("DROP TABLE IF EXISTS mp4_info")
    cur.execute("""CREATE TABLE mp4_info (
      id INTEGER AUTO_INCREMENT PRIMARY KEY,
      path TEXT,
      cat TEXT,
      filename TEXT,
      fps TEXT,
      duration REAL,
      duration_hms TEXT,
      width INTEGER,
      height INTEGER,
      size_bytes BIGINT,
      data JSON
    )
    """)
    print("Ensure table done")

app = Get(host="dbhost",dbname="myflix")
app.ensure_table()
app.main()
mydb.commit()