Python 基于SQLite中的条件创建列
我正试图从Python在SQLite数据库中创建一个新列。如果满足条件,我希望列为1或0。我尝试了以下方法,但没有成功:Python 基于SQLite中的条件创建列,python,sqlite,Python,Sqlite,我正试图从Python在SQLite数据库中创建一个新列。如果满足条件,我希望列为1或0。我尝试了以下方法,但没有成功: query = 'SELECT codes CASE WHEN codes LIKE 'X10' THEN 1 ELSE 0 END as I10X FROM processed_data' cur.execute(query) 示例数据: +--------------+ | codes | | +--------------+ | X10, X11|
query = 'SELECT codes CASE WHEN codes LIKE 'X10' THEN 1 ELSE 0 END as I10X FROM processed_data'
cur.execute(query)
示例数据:
+--------------+
| codes | |
+--------------+
| X10, X11| |
| x11, X9 | |
| x10 | |
| x13 | |
+-------+------+
目标数据示例:
+----------+-----+
| codes | X10 |
+----------+-----+
| X10, X11 | 1 |
| x11, X9 | 0 |
| x10 | 0 |
| x13 | 0 |
| x10 | 1 |
+-------+--------+
有人能建议怎么做吗?您是希望按预期的方式投影数据,还是希望实际使用数据本身创建新列 首先循环行并根据您的条件创建映射列_code,X10映射。 当没有此类列时,创建新列x10。 c、 执行(“alter table processed_data add列'x10''整数'default 0”)
对列代码X10执行更新查询。是否要按预期投影数据,还是实际使用数据本身创建新列 首先循环行并根据您的条件创建映射列_code,X10映射。 当没有此类列时,创建新列x10。 c、 执行(“alter table processed_data add列'x10''整数'default 0”)
对列代码X10执行更新查询。只需获得您要求的结果,而不实际创建列,请使用
select *, codes like 'x10' from codes;
为了得到您要求的结果,而不实际创建列,请使用
select *, codes like 'x10' from codes;
您首先需要更改
处理的\u数据
表以添加X10
列,然后可以基于code
字段更新X10
字段。例如:
cursor = connection.cursor() # fetch a cursor from your SQLite connection
# let's first check if we already have the X10 column in our table
x10_exists = False
cursor.execute("PRAGMA table_info(processed_data)") # get info on the table
for column in cursor:
if column[1] == 'X10':
x10_exists = True
break
if not x10_exists: # if X10 doesn't exist...
cursor.execute("ALTER TABLE processed_data ADD COLUMN X10") # add the X10 column
cursor.execute('''
UPDATE processed_data
SET X10=CASE
WHEN codes LIKE 'X10' THEN 1
ELSE 0
END
''') # update the values
db.commit() # commit the transaction
您首先需要更改
处理的\u数据
表以添加X10
列,然后可以基于code
字段更新X10
字段。例如:
cursor = connection.cursor() # fetch a cursor from your SQLite connection
# let's first check if we already have the X10 column in our table
x10_exists = False
cursor.execute("PRAGMA table_info(processed_data)") # get info on the table
for column in cursor:
if column[1] == 'X10':
x10_exists = True
break
if not x10_exists: # if X10 doesn't exist...
cursor.execute("ALTER TABLE processed_data ADD COLUMN X10") # add the X10 column
cursor.execute('''
UPDATE processed_data
SET X10=CASE
WHEN codes LIKE 'X10' THEN 1
ELSE 0
END
''') # update the values
db.commit() # commit the transaction
您只是想以这种方式选择数据,还是真的想更改表?我想更改表,以便有一个新列,在本例中,这将是“X10”,您只是想以这种方式选择数据,还是真的想更改表?我想更改表,以便有一个新列,在本例中,这将是“X10”,前提是我正确理解您的问题,我想将包含新列的完整表导入Python。我不担心将其存储在数据库中,因为代码会发生变化。如果我正确理解您的问题,我想将包含新列的完整表导入Python。我不担心将其存储在数据库中,因为代码会发生变化。我知道你也想创建列,我认为其他人正在帮助你。我知道你也想创建列,我认为其他人正在帮助你。首先检查是否存在列x10,然后执行alter table。谢谢!我添加了%X10%,以防有人使用它作为参考,因为代码中有一些字符串column@avocet-关于更改已经更改的表,我在更改之前添加了一个检查X10列是否存在。它不会再出现你的错误了。很好的补充。想知道这个列是否可以是动态的。i、 e.搜索数据库中的所有列以查找X10匹配项?@avocet-好的,您可以从技术上使用
PRAGMA
查询来获取所有列,然后构建UPDATE
案例以检查所有列。首先检查是否存在列X10,然后执行alter table。谢谢!我添加了%X10%,以防有人使用它作为参考,因为代码中有一些字符串column@avocet-关于更改已经更改的表,我在更改之前添加了一个检查X10列是否存在。它不会再出现你的错误了。很好的补充。想知道这个列是否可以是动态的。i、 e.搜索数据库中的所有列以查找X10匹配?@avocet-好的,您可以从技术上使用PRAGMA
查询来获取所有列,然后构建UPDATE
案例以检查所有列。