要在带有psycopg2的python中使用部门名称显示部门ID?

时间:2018-10-13 04:54:28

标签: python postgresql psycopg2

在python中使用psycopg2时,我试图通过插入为原始查询来使用部门名称获取新员工详细信息的部门ID。但是,我找不到这个问题的任何解决方案。有什么解决方案可以帮助我完成任务吗?

这是我的员工数据库: 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 个答案:

答案 0 :(得分:0)

如果您只想精打细算,请使用它。

 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})

答案 1 :(得分:0)

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

deptname = str(input("Enter department name: "))

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