postgresql python pyodbc传递参数问题

myzjeezk  于 2023-03-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(126)

代码:

import pyodbc as pyodbc
cnxn = pyodbc.connect(DB_STR)
cursor = cnxn.cursor()

def insert_table(insert_query,date_para):
    result = cursor.execute(insert_query,date_para)
    cnxn.commit()

该代码用于传递sql中的参数。
我的问题是,当sql中没有参数需要传递时,我仍然希望重用insert_table函数:

my_query ='''

insert into mytable ...
'''

insert_table(my_query,'')

如果我将第二个参数位置留空或添加其他内容,则会得到错误。
我应该如何修改代码,使它可以在两种情况下工作,有参数和没有参数需要传递?

ovfsdjhp

ovfsdjhp1#

如果我将第二个参数位置留空或添加其他内容,则会得到错误。
如果查询没有参数,则空元组有效:

import pyodbc

connection_string = (
    "DRIVER=PostgreSQL Unicode;"
    "SERVER=192.168.0.199;"
    "UID=scott;PWD=tiger;"
    "DATABASE=test;"
)
cnxn = pyodbc.connect(connection_string, autocommit=True)
crsr = cnxn.cursor()
crsr.execute("""\
CREATE TEMPORARY TABLE tmp (
id serial primary key, 
txt varchar(50) default '(unknown)')
""")

insert_query = "insert into tmp default values"
date_para = tuple()
crsr.execute(insert_query, date_para)
print(crsr.execute("select * from tmp").fetchall())
# [(1, '(unknown)')]

相关问题