代码之家  ›  专栏  ›  技术社区  ›  Kousic

使用python中的department name和psycopg2显示department ID?

  •  1
  • Kousic  · 技术社区  · 6 年前

    enter image description here

    这是我的python代码:

    import datetime
    
    import psycopg2.extras
    conn = psycopg2.connect(database="emp", user="postgres",
                            password="12345", host="127.0.0.1", 
    port="5432")
    
    cur = conn.cursor(cursor_factory = psycopg2.extras.RealDictCursor)
    
    emp_name = str(input("Enter new employee name: "))
    
    while True:
        gender = str(input("Type your gender: "))
        if gender == 'M' or gender == 'F':
            break
    
    hire_date = input("Enter hire date(YYYY-MM-DD): ")
    year, month, day = map(int, hire_date.split('-'))
    hiredate = datetime.date(year, month, day)
    
    salary = str(int(input("Enter your salary: ")))
    
    deptname = str(input("Enter department name: "))
    
    cur.execute("INSERT INTO employee(emp_name, gender, hire_date, salary,
     deptid) VALUES(%s, %s, %s, %s)",(emp_name, gender,hire_date, salary))
    
    cur.execute("SELECT * FROM employee ORDER BY emp_no DESC LIMIT 1 WHERE 
      deptname = %(deptname)s", {'deptname': deptname})
    
    rows = cur.fetchall()
    
    print( '\n'.join( str( row ) for row in rows ) )
    
    print( "Created successfully!" )
    conn.commit()
    conn.close()
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Kousic    6 年前

    使用部门名称显示部门ID可以通过以下查询实现:

    deptname = str(input("Enter department name: "))
    
    cur.execute("SELECT deptid FROM department WHERE department.deptname = %("
                "deptname)s", {'deptname': deptname})
    deptid = cur.fetchone()
    
        2
  •  0
  •   Kousic    6 年前

     cur.execute('''SELECT d.deptid FROM department d 
            WHERE d.deptname =  %(deptname)s''', {'deptname': deptname})
    

    如果你想知道那个部门所有员工的详细情况

     cur.execute('''SELECT e.* FROM employee e JOIN department d 
                   ON  d.deptid = e.deptid 
            WHERE d.deptname =  %(deptname)s''', {'deptname': deptname})