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