gpt4 book ai didi

Python SQLite3 - 表输出格式问题和处理 IntegrityError

转载 作者:搜寻专家 更新时间:2023-10-30 22:19:05 24 4
gpt4 key购买 nike

我有一个使用 Python + Sqlite3 创建的表

c.execute('CREATE TABLE IF NOT EXISTS reg(col1 TEXT PRIMARY KEY, col2 TEXT)')

我什至使用具有字符串值(特定 URL)的 val1 和 val2 变量将记录写入其中

c.execute('INSERT INTO reg VALUES(?,?)', (val1, val2))

现在当我使用这段代码打印表格时

c.execute('SELECT * FROM reg')
rows = c.fetchall()
print rows

它显示输出为

[(u'http://www.someURL.com', u'http://www.someURL.com/someDIR/')]

现在,列值前面的 u 是什么意思?

编辑: 我的下一个疑问是这个问题的延续,所以我正在更新这个线程而不是创建一个新线程。我也更新了标题。希望没关系。

从上面的代码可以看出,我的col1是一个Primary Key。因此,当我第二次尝试有目的地插入相同的记录时,它会抛出异常

IntegrityError: column col1 is not unique

为了处理这个问题,我修改了这样的代码......

try:
c.execute('INSERT INTO reg VALUES(?,?)', (val1, val2))
except sqlite3.IntegrityError:
print val1+ " is already in the database"

现在执行这段代码导致了这个异常

Traceback (most recent call last):
File "C:\Documents and Settings\user\Desktop\dbUrl.py", line 47, in <module>
c.execute('INSERT INTO reg VALUES(?,?)', (val1,val2))
OperationalError: database is locked

知道如何解决这个问题吗?事实上,我什至不明白这个 OperationError 是什么意思以及是什么导致数据库被锁定?

最佳答案

u 表示那些是 Unicode 字符串。它们可以编码为您想要的任何字符集:

u'http://www.someURL.com'.encode('ascii') # or 'latin-1' or 'utf-8'

你会得到没有 u 的相同字符串,因为它们都是 ASCII 字符。

参见 http://docs.python.org/howto/unicode.html .

如果字符串只包含 ASCII 字符(英文键盘上的所有常规符号),那么您不必为此担心太多。但是,如果您使用的是扩展字符集,则需要确保在保存字符串或向用户显示它们时指定正确的编码。

编辑:当我执行时

import sqlite3

con = sqlite3.connect(":memory:")
con.isolation_level = None
c = con.cursor()

val1, val2 = 'a', 'b'

c.execute('CREATE TABLE IF NOT EXISTS reg(col1 TEXT PRIMARY KEY, col2 TEXT)')
c.execute('INSERT INTO reg VALUES(?,?)', (val1, val2))
try:
c.execute('INSERT INTO reg VALUES(?,?)', (val1, val2))
except sqlite3.IntegrityError:
print val1, "is already in the database"

我得到 a 已经在数据库中。 (请注意执行该打印语句的正确方法,尽管您的方法完全有效。)所以您的问题出在其他地方——locked 意味着其他东西正在写入数据库。像我一样用内存数据库试试这个,所以你肯定知道没有其他东西正在访问它。如果这行得通,那么您的问题就是异常所指示的——其他东西正在访问数据库。

关于Python SQLite3 - 表输出格式问题和处理 IntegrityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com