为什么MSSQL Databasestore只能临时插入PythonCode中的数据?

2024-10-02 08:23:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在这些示例代码的开头,我在数据库中有3个条目:“Old\u 1”、“Old\u 2”和“Old\u 3”。在下面的代码中,我两次连接到数据库,每次插入一个条目,然后调用“showall”函数:

# Liberies
import pyodbc

# SQL-Account
dsn = 'sqlserverdatasource'
username = 'xxx'
password = 'xxx'
database = 'xxx'
con_string = 'DSN=%s;UID=%s;PWD=%s;DATABASE=%s;' % (dsn, username, password, database)

def showall():
    cursor = cnxn.cursor()
    sqlstr = "SELECT sensless FROM test"
    cursor.execute(sqlstr)
    while True:
        row = cursor.fetchone()
        if not row: break
        print row.sensless
    cursor.close()  

#TEST

cnxn = pyodbc.connect(con_string)
cursor = cnxn.cursor()
sqlstr = "INSERT INTO test (sensless) VALUES ('New_1');"
cursor.execute(sqlstr)
cursor.close()
showall()
cnxn.close()

print('------')

cnxn = pyodbc.connect(con_string)
cursor = cnxn.cursor()
sqlstr = "INSERT INTO test (sensless) VALUES ('New_2');"
cursor.execute(sqlstr)
cursor.close()
showall()
cnxn.close()

生成了以下输出:

Old_1
Old_2
Old_3
New_1
------
Old_1
Old_2
Old_3
New_2

我想知道,因为在第二次调用showall函数时丢失了New\ 1 entrie。看起来数据库只是暂时保存数据。问题是:为什么?-这是因为我正在用ODBC连接数据库吗?你知道吗

要获得此结果,我必须更改什么:

Old_1
Old_2
Old_3
New_1
------
Old_1
Old_2
Old_3
New_1
New_2

非常感谢


Tags: test数据库newcloseexecutestringconcursor

热门问题