SQLite创建升级数据库,Python3实现连接SQLite数据库

Python3兑现连续SQLite数据库的章程,python3sqlite

本文实例呈报了Python3贯彻三回九转SQLite数据库的法子,对于Python的上学有不利的参阅借鉴价值。分享给大家供我们参照他事他说加以考查之用。具体方法如下:

实例代码如下:

import sqlite3

db = r"D:pyWorktest.db"  #pyWork目录下test.db数据库文件
drp_tb_sql = "drop table if exists staff"
crt_tb_sql = """
create table if not exists staff(
  id integer primary key autoincrement unique not null,
  name varchar(100),
  city varchar(100)
);
"""

#连接数据库
con = sqlite3.connect(db)
cur = con.cursor()

#创建表staff
cur.execute(drp_tb_sql)
cur.execute(crt_tb_sql)

#插入记录
insert_sql = "insert into staff (name,city) values (?,?)"  #?为占位符
cur.execute(insert_sql,('Tom','New York'))
cur.execute(insert_sql,('Frank','Los Angeles'))
cur.execute(insert_sql,('Kate','Chicago'))
cur.execute(insert_sql,('Thomas','Houston'))
cur.execute(insert_sql,('Sam','Philadelphia'))

con.commit()

#查询记录
select_sql = "select * from staff"
cur.execute(select_sql)

#返回一个list,list中的对象类型为tuple(元组)
date_set = cur.fetchall()
for row in date_set:
  print(row)

cur.close()
con.close()

目的在于本文实例对大家的Python学习抱有利于。

原稿链接:

python无法张开sqlite数据库

import sqlite3
conn = sqlite3.connect("test.db")
conn.execute("PRAGMA journal_mode = wal")
conn.commit()

cu = conn.cursor()
..  

生龙活虎、创设数据库

android怎实现SQlite数据库的三番五次?最棒详细些

package xiaohang.zhimeng;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;public class MySQLiteHelper extends SQLiteOpenHelper{//调用父类结构器public MySQLiteHelper(Context context, String name, CursorFactory factory,int versionState of Qatar {super(context, name, factory, version卡塔尔;}/*** 当数据库第叁遍创设时实行该办法,平时将创造表等初叶化操作放在该方法中实行.* 重写onCreate方法,调用execSQL方法创造表* */@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table if not exists hero_info("+ "id integer primary key,"+ "name varchar,"+ "level integerState of Qatar"卡塔尔国;}//当展开数据库时传出的版本号与如今的版本号差异一时间会调用该方法@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion卡塔尔国{}}使用那些类来创制四个数据库 并对数据库进行操作MySqliteHelper myHelper = new MySQLiteHelper(this, "my.db", null, 1卡塔尔(قطر‎;SQLiteDatabase db = myHelper.getWritableDatabase(卡塔尔国; db.execSQL("insert into hero_info(name,level卡塔尔 values('bb',0卡塔尔国"卡塔尔国;execSQL(卡塔尔(قطر‎里是你的SQL语句  

本文实例陈诉了Python3兑现连接SQLite数据库的法子,对于Python的上学有不利的参照借鉴价值。分...

    Android为了让大家能够更进一层有扶助地保管数据库,专门提供了三个SQLiteOpenHelper帮忙类, 依据那么些类就可以特别轻巧地对数据库举行创办和晋级。

    SQLiteOpenHelper是一个抽象类,在那之中有多个抽象方法分别是onCreate(卡塔尔国和onUpgrade(卡塔尔(قطر‎,分别在这里四个点子中完结创造和进级数据库的逻辑

    SQLiteOpenHelper还会有多个相当的重大的实例方法,getReadableDatabase(State of Qatar和getWritableDatabase(State of Qatar。那三个主意都得以创设或张开贰个共处的数据库(假使数据库已存在则直接打开,假若不设有则创建多少个State of Qatar,并赶回二个可对数据库进行读写操作的指标。不相同的是,当数据库不可写入的时候(如磁盘空间已满卡塔尔国getReadableDatabase(State of Qatar方法再次来到的对象将以只读的情势去开发数据库,而getWritableDatabase(State of Qatar将抛出特别。

    SQLiteOpenHelper中有多个布局方法能够重写,日常选取参数少的不行布局方法就可以。这几个构造方法选用三个参数,第叁个是Context 。第三个是数额库名。第多个参数允许大家在查询数据的时候回来一个自定义的Cursor,平日都以流传null。第多少个参数是近些日子数据库的本子号,可用于对数据库进行升高操作。创设出SQLiteOpenHelper的实例之后,再调用它的getReadableDatabase(卡塔尔(قطر‎或getWritableDatabase(卡塔尔国方法就能够创造数据库了,数据库文件会存放在/data/data/<package name>/databases/目录下。那时候重写的onCreate(State of Qatar方法也会收获实行,所以平时会在此去管理部分创立表的逻辑。

    

    创立贰个品种Database德姆o,新建MyDatabaseHelper类从SQLiteOpenHelper世袭:

package ga.orlion.databasedemo;

 

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.widget.Toast;

import android.database.sqlite.SQLiteOpenHelper;

 

public class MyDatabaseHelper extends SQLiteOpenHelper {

 

 

        public static final String CREATE_BOOK = "create table book ("

  • "id integer primary key autoincrement, "

  • "author text, "

  • "price real, "

  • "pages integer, "

  • "name text)";

 

private Context mContext;

 

public MyDatabaseHelper(Context context, String name, CursorFactory factory, int version) {

super(context, name, factory, version);

mContext = context;

}

 

@Override

public void onCreate(SQLiteDatabase db) {

 

db.execSQL(CREATE_BOOK);

Toast.makeText(mContext, "数据库创立了", Toast.LENGTH_SHORT).show();

}

 

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

 

}

 

}

    个中国建工业总群集团表语句: 

create table Book (

    id integer primary key autoincrement,

    author text,

    price real,

    pages integer,

    name text)

    SQLite不像别的的数据库具有众多糊涂的数据类型, 它的数据类型很简短, integer代表整型,real代表浮点型,text表示文本类型,blob表示二进制类型。别的,上述建表语句中大家还动用了 primary key将 id列设为主键,并用 autoincrement关键字表示 id列是自增进的。

    我们把建表语句定义成了一个字符串常量,然后在 onCreate(卡塔尔国方法中又调用了 SQLiteDatabase的 execSQL(卡塔尔(قطر‎方法去实践那条建表语句,并弹出三个 Toast提示成立成功。

    修改activity_main.xml:

<LinearLayout xmlns:android=""

    android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

    

    <Button

        android:id="@+id/create_database"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="成立数据库" />

</LinearLayout>

    构造文件非常粗略,便是参加了八个按键,用于创制数据库。最终更改MainActivity中的代码:

                super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

dbHelper = new MyDatabaseHelper(this , "BookStore.db" , null , 1);

Button button = (Button) findViewById(R.id.create_database);

button.setOnClickListener(new View.OnClickListener() {

 

@Override

public void onClick(View v) {

dbHelper.getWritableDatabase();

}

});

    这里大家在 onCreate(卡塔尔方法中创设了二个MyDatabaseHelper对象,并且经过构造函数的参数将数据库名钦定为 BookStore.db,版本号内定为 1,然后在 Create database开关的点击事件里调用了getWritableDatabase(卡塔尔国方法。这样当第二次点击Create database按键时,就能检查评定到前段时间途序中并未BookStore.db这么些数据库, 于是会创设该数据库并调用MyDatabaseHelper中的 onCreate(卡塔尔国方法,那样 Book表也就获得了创造,然后会弹出一个 Toast提醒创变成功。再一次点击 Create database开关时,会开掘那时候豆蔻梢头度存在 BookStore.db数据库了,因而不会又创设一遍。

    

    接下去大家应用adb shell来对数据库和表的创导意况张开查看,adb工具在Android SDK中自带,那一个工具得以对连年在电脑上的手提式有线电话机或模拟器进行调度操作,它寄放在sdk的platform-tools目录下。先将以此目录加多到境况变量中。然后调节新北输入 "adb shell",然后利用"cd"命令步入/data/data/ga.orlion.databasedemo/databases/目录下,使用ls查看所有文件拜谒到有五个文件,三个是大家创设的BookStore.db,另三个BookStore.db-journal则是为着数据库能够支持工作而发出的近年来日志文件,平时境况下该文件的大小是0。接下来大家经过sqlite3命令张开数据库,只供给输入sqlite3前边跟上数据库名就能够。当时就打开BookStore.db数据库了,今后就能够对那么些数据库的表举办政管理理了,能够经过".table"命令来查阅有怎样表

,那时有三个表,android_meatdata是各种数据库都会自动生成的,此外八个表book是大家成立的。还能透过".schema"命令来查看他们的建表语句。

    

二、进级数据库

    若是大家想再添加三个表到大家创造的数据库BookStore.db中不可能像创制第三个表book时那样轻松的写到oncreate方法中了,因为大家的数据库已经创办了,onCreate(卡塔尔国不会再推行了,所以就用到了onUpgrade(State of Qatar方法。

    可以将MyDatabaseHelper改为:

package ga.orlion.databasedemo;

 

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.widget.Toast;

import android.database.sqlite.SQLiteOpenHelper;

 

public class MyDatabaseHelper extends SQLiteOpenHelper {

 

public static final String CREATE_BOOK = "create table book ("

  • "id integer primary key autoincrement, "

  • "author text, "

  • "price real, "

  • "pages integer, "

  • "name text)";

 

public static final String CREATE_CATEGORY = "create table Category ("

  • "id integer primary key autoincrement, "

  • "category_name text, "

  • "category_code integer)";

 

private Context mContext;

 

public MyDatabaseHelper(Context context, String name, CursorFactory factory, int version) {

super(context, name, factory, version);

mContext = context;

}

@Override

public void onCreate(SQLiteDatabase db) {

 

db.execSQL(CREATE_BOOK);

db.execSQL(CREATE_CATEGORY);

Toast.makeText(mContext, "数据库成立了", Toast.LENGTH_SHORT).show();

}

 

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("drop table if exists Book");

db.execSQL("drop table if exists Category");

onCreate(db);

}

 

}

    

    能够见见,大家在 onUpgrade(卡塔尔国方法中进行了两条 DROP语句,假使发现数据库中早就存在 Book表或 Category表了,就将这两张表删除掉,然后再调用 onCreate(卡塔尔国方法去重新创制。这里先将早已存在的表删除掉,是因为假如在成立表时开采那张表已经存在了,就能直接报错。

    接下去便是让 onUpgrade(State of Qatar方法能够推行了,SQLiteOpenHelper的结构方法里接到的第多少个参数吗?它意味着最近数据库的本子号,今后借使传入三个比 1大的数, 就能够让 onUpgrade(卡塔尔国方法获得实行了。

dbHelper = new MyDatabaseHelper(this , "BookStore.db" , null , 2);

本文由365bet体育在线官网发布于365bet,转载请注明出处:SQLite创建升级数据库,Python3实现连接SQLite数据库

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。