sqlite3 glob
时间: 2023-11-23 17:56:47 浏览: 38
SQLite中的GLOB运算符是用于匹配通配符指定模式的文本值的。如果搜索表达式与模式表达式匹配,GLOB运算符将返回真(true),也就是1。与LIKE运算符不同的是,GLOB是大小写敏感的。以下是一个使用GLOB运算符的SQLite查询的例子:
```sql
SELECT * FROM mytable WHERE name GLOB 'J*';
```
这个查询将返回所有名字以J开头的行。在这个例子中,GLOB运算符用于匹配以J开头的名字。如果您想要匹配任何单个字符,可以使用下划线(_)通配符。如果您想要匹配任何一组字符,可以使用方括号([])通配符。例如,以下查询将返回所有名字以J开头,后跟任何一个元音字母的行:
```sql
SELECT * FROM mytable WHERE name GLOB 'J[aeiou]*';
```
相关问题
sqlite like 中文字符
在 SQLite 中,可以使用 GLOB 或 REGEXP 进行中文字符的模糊匹配,但是 LIKE 不支持中文字符的匹配。如果需要使用 LIKE 进行中文字符的匹配,可以使用拼音进行转换后再进行匹配。
例如,可以使用第三方库 pypinyin 将中文字符转换为拼音,然后再使用 LIKE 进行匹配。示例代码如下:
```python
import sqlite3
from pypinyin import lazy_pinyin
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 创建表格
c.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY, name TEXT)''')
# 插入数据
c.execute("INSERT INTO users VALUES (1, '张三')")
c.execute("INSERT INTO users VALUES (2, '李四')")
c.execute("INSERT INTO users VALUES (3, '王五')")
# 查询数据
name_pinyin = lazy_pinyin('张')
c.execute("SELECT * FROM users WHERE name LIKE ?", ('%{}%'.format(name_pinyin[0]),))
print(c.fetchall())
conn.commit()
conn.close()
```
将多个以日期命名的csv读入sqlite3生成多个db文件的代码
可以参考以下代码:
```
import sqlite3
import glob
import os
# 获取当前目录下所有以日期命名的csv文件
csv_files = glob.glob('[0-9]*.csv')
# 定义数据库文件名前缀
db_prefix = 'data_'
for csv_file in csv_files:
# 获取日期
date_str = os.path.splitext(csv_file)[0]
# 定义数据库文件名
db_name = db_prefix + date_str + '.db'
# 连接数据库并创建表
conn = sqlite3.connect(db_name)
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS data
(column1 TEXT, column2 REAL, column3 INT)''')
# 读取csv文件并插入数据到表中
with open(csv_file, 'r') as f:
for line in f:
data = line.strip().split(',')
c.execute("INSERT INTO data VALUES (?, ?, ?)", (data[0], float(data[1]), int(data[2])))
# 提交并关闭数据库连接
conn.commit()
conn.close()
print('生成数据库文件完成!')
```
该代码先使用glob模块获取当前目录下所有以日期命名的csv文件,然后定义数据库文件名前缀和数据库表结构,并对每个csv文件创建对应的数据库文件和表,最后读取csv文件并插入数据到数据库表中。记得修改表结构和CSV文件中的列数、列名和数据类型。